【Linux从入门到放弃】Linux编辑器——vim的使用

news2024/12/23 23:34:14

🧑‍💻作者: @情话0.0
📝专栏:《Linux从入门到放弃》
👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢!

在这里插入图片描述

Linux编辑器(vim)

  • 前言
  • 一、vim的基本概念
  • 二、vim的基本操作
    • 1.进入vim
    • 2.命令模式切换到插入模式
    • 3.插入模式切换到命令模式
    • 4.命令模式切换到底行模式
    • 5.退出 vim 编辑界面
  • 三、Vim命令模式命令集
    • 1. 光标的移动
    • 2. 复制
    • 3. 删除
    • 4. 撤销
    • 5. 更改
  • 四、Vim底行模式命令集
    • 1.列出每一行代码前的行号
    • 2. 光标跳转
    • 3.查找字符pic_centerpic_center
    • 4.替换字符
  • 总结


前言

  当我们学习 Linux 开始编程时,就需要一个开发工具,对于刚开始学习 Linux 的我们最适合使用 vim 编辑器。
  vim 文本编辑器,是由 vi 发展演变过来的文本编辑器,它们都是多模式编辑器,不同的是 vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,而且还有一些新的特性在里面。比如语法加亮,可视化操作不仅可以在终端运行,也可以运行于 x windows、mac os 、windows。


一、vim的基本概念

  前面我们说到 vim 是一个多模式的编辑器,在我们学习的过程中主要用到三种模式:命令模式(command mode)、插入模式(insert mode)、底行模式(last line mode)。

  命令模式(正常模式、普通模式)

在该模式下,主要功能是控制屏幕光标的移动,字符、字或行的删除,移动复制某个区段以及进入到插入模式下或者进入到底行模式下。

  插入模式

只有在插入模式下,才可以做文字的输入(编辑代码),按 Esc 键可回到命令模式。该模式是我们学习linux编写代码用的最频繁的编辑模式。

  底行模式

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,按 : (shift+;)即可进入该模式。除此之外,我们想要看 vim 都有哪些模式,可以在该模式下输入 help vim-modes 进行查看。

二、vim的基本操作

  在这一模块我们主要讲一下 vim 这三种模式之间的切换
  如果我们使用的是虚拟机的话,那在使用 vim 之前先得对其进行安装(yum install -y vim);如果使用的是服务器的话就不用安装了,可以直接使用。

1.进入vim

  进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑界面:vim test.c,当然也可以先使用touch命令创建一个文件,再使用刚才的指令进入到 vim 的编辑界面。
  当刚进入到 vim 的编辑界面之后,当前 vim 是处于命令模式,只有切换到插入模式才能够输入文字。我们可以在vim编辑界面的左下角看到下面的图片表示当前所处于的模式为普通模式,也就是命令模式。

在这里插入图片描述

2.命令模式切换到插入模式

  要想从命令模式切换到插入模式有三种方法,在命令模式下我们可以通过按字母 a i o进入到插入模式下。同时注意到vim编辑界面的左下角也发生了变化。

按 i 切换进入插入模式,按 i 进入插入模式后是从光标当前位置开始输入文字;
按 a 进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按 o 进入插入模式后,是插入新的一行,从行首开始输入文字。

在这里插入图片描述

3.插入模式切换到命令模式

  要想从插入模式切换到命令模式直接按 Esc 键即可。

4.命令模式切换到底行模式

  假设我们当前处在插入模式下,是无法进入到底行模式下的,只有先从插入模式切换到命令模式下,才可进入到底行模式。我们可以通过按 :(分号)键进入到底行模式下。

5.退出 vim 编辑界面

  首先我们得先进入到底行模式,然后在冒号(:)后面输入相关字母执行退出操作。
   :q 通过q可以直接退出,但是不会保存你刚才所编辑的内容;
  :wq 加上w便可将刚才的内容先保存,然后再退出;
  q! 不保存内容,强制退出。

在这里插入图片描述

三、Vim命令模式命令集

1. 光标的移动

  1. 在 vim 编辑界面,我们通常不使用键盘的上下左右键来进行光标的移动,而是用小写英文字母 h、j、k、l ,分别控制光标左、下、上、右移一格;
  2. 按 G:光标移动到代码的最后;
  3. 按 ^ : 移动到光标所在行的“行首”
  4. 按 $ :移动到光标所在行的“行尾”;
  5. 按 w :光标从当前单词跳到下一个单词上;
  6. 按 e :光标从当前单词跳到下一个单词的字尾;
  7. 按 b :光标从当前单词跳到前一个单词上;
  8. 按 *l :光标从当前位置向后移动 * 个位置;
  9. 按 gg :进入到文本最开始;
  10. 按 shift + g :进入到文本内容末端;
  11. 按 n + shift + g :光标定位到第 n 行;
  12. 按 * + ctrl + g :光标定位到第 * 行(这三个要分开点击键盘);
  13. 按 *G :光标移动到第 * 行行首;
  14. 按 ctrl + b :屏幕向后移动一页;
  15. 按 ctrl + f :屏幕向前移动一页;
  16. 按 ctrl + u :屏幕向后移动半页;
  17. 按 ctrl + d :屏幕向前移动半页;
  18. 按 ~ :对光标所在的字母进行大小写的替换;

2. 复制

  1. 按 yw :从光标所在位置开始到该单词的末尾复制到缓冲区内,假设有单词 make,光标在 a 上,那么按 yw 后缓冲区就会有 ake;
  2. 按 *yw :复制 * 个单词到缓冲区,光标所在的单词为第一个;
  3. 按 yy :复制光标所在行到缓冲区;
  4. 按 *yy :从光标所在行开始向下数复制 * 行(带上光标所在行);
  5. 按 p :将缓冲区里的内容粘贴到光标所在位置处。
  6. 按 *p:将缓冲区里的内容粘贴到光标所在位置处 * 次;

3. 删除

  1. 按 x :每按一次就会删除光标所在的那一个字符;
  2. 按 *x :删除掉从光标开始(包括自己)的向后 * 个字符;
  3. 按 X :这个是大写的,每按一次删除光标所在位置的前一个字符;
  4. 按 *X:删除掉从光标开始的向前 * 个字符;
  5. 按 dd :删除光标所在行(也可以认为是剪切);
  6. 按 *dd :从光标所在行开始删除 * 行;

4. 撤销

  1. 按 u :万一自己在编写代码时出现了错误,那么就可以通过按 u 来撤销上一次的动作,也可以多次按 u 执行多次的撤销。
  2. 按 ctrl + r :可以恢复刚才所执行的撤销动作,相当于对撤销进行了撤销。

5. 更改

  1. 按 r :更改光标所在的字符,r 一按,然后再输入你要更改的字符即可;
  2. 按 R : 这个可以一直更改,光标会不断往后移,当你不再想去更改时,按ECS即可退出更改;

四、Vim底行模式命令集

  在使用底行模式之前,一定要先从命令模式开始,再按 ”:“进入底行模式。
  一定要先输入冒号进入底行模式之后再去执行下面的命令。

1.列出每一行代码前的行号

set nu :输入 set nu 之后,就会在代码每一行前显示出行号。

在这里插入图片描述

2. 光标跳转

通过输入冒号进入底行模式,然后再输入一个数字n,按回车,光标就会来到第 n 行。

在这里插入图片描述

3.查找字符pic_centerpic_center

先按 / 键,再输入你想要查找的字符,然后按回车键,此时就把所有含有你要查找的字母的单词标列出来,如果第一次光标在的单词不是想要找的,可以通过不断按 n 往后寻找您想找的单词。
同样还有另一种方法也可以实现同样的功能,就是把 / 替换成 ?,而它们之间的区别就是:第一种光标是从上往下开始寻找的,而第二种是从下往上开始寻找的 。

在这里插入图片描述在这里插入图片描述

4.替换字符

在底行模式下,可以这样的操作将代码成批量的更改。比如 %s/abc/ABC/g ,这样可以将上面所有的 abc 全部改为 ABC。

在这里插入图片描述


总结

  此篇文章主要是对vim编辑器的学习,只有了解了它的基本命令,我们才可以更好的去使用它,进而更好的学习Linux,使用Linux进行编程。
  感谢您的阅读,若文章存在问题还烦请指出,感觉有帮到你的话还请一键三连。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/147077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TPM知识点集锦

1. 实体类型(Entity Types) (1)永久实体(Permanent Entities) 层级(Hierarchies)字典攻击锁定机制(the dictionary attack lockout mechanism)平台配置寄存…

Python安装torch(含torch和torchvision对应版本)

torch 、torchvision和python的对应版本如下&#xff1a; torch torchvision pythonmaster / nightlymaster / nightly>3.61.7.1 0.8.2>3.61.7.0 0.8.1>3.61.7.00.8.0>3.61.6.00.7.0>3.61.5.10.6.1>3.51.5.00.6.0>3.51.4.00.5.0 2.7, >3.5, <3.81…

HTC红外发射器基站红灯,死机,恢复出厂固件操作步骤

固件路径&#xff1a;C:\Program Files (x86)\Steam\steamapps\common\SteamVR\tools\lighthouse\firmware\lighthouse_tx\archive\htc_2.0 原厂244固件 找到以下两个文件 lighthouse_tx_htc_2_0-calibration-rescue-244.binlighthouse_tx_htc_2_0-244-2016-03-12.bin 1.在…

Python采集二手房源数据信息 基础版, 多线程版

前言 大家早好、午好、晚好吖 ❤ ~ 环境使用: Python 3.8 Pycharm 模块使用: requests >>> pip install requests 数据请求模块 parsel >>> pip install parsel 数据解析模块 re csv 内置模块 安装python第三方模块: win R 输入 cmd 点击确定, 输入…

基础算法(一)——快速排序

快速排序 介绍 快排是一种复杂度O(nlog(n)nlog(n)nlog(n))的排序算法&#xff0c;在极端情况下会退化为O(n2{n}^2n2)&#xff0c;但是它是一种原地算法&#xff0c;即不需要占据额外空间 原理是先在数列中取一个数x&#xff0c;这个数一般随机选取或是取中间值&#xff0c;然…

四、k8s实战入门

本章节将介绍如何在kubernetes集群中部署一个nginx服务&#xff0c;并且能够对其进行访问。 1 namespace Namespace是kubernetes系统中的一种非常重要资源&#xff0c;它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 默认情况下&#xff0c;kubernetes集群…

VuePress搭建文档网站遇到的一些坑点,中文路径,图片显示失败,打包白屏

VuePress搭建文档网站遇到的一些坑点 前言 本篇记录用VuePress搭建文档网站时碰到的一些坑点和解决方案 ★提高阅读体验★ &#x1f449; ♠一级标题 &#x1f448; &#x1f449; ♥二级标题 &#x1f448; &#x1f449; ♥ 三级标题 &#x1f448; &#x1f449; ♥…

HTML与CSS基础(六)—— CSS布局(浮动float)

目标能够使用 结构伪类选择器 在HTML中选择元素 能够说出 标准流 元素的布局特点 能够说出 浮动元素 的特点 能够使用浮动完成 小米模块布局案例 能够说出 清除浮动 的目的&#xff0c;并能够使用 清除浮动的方法一、结构伪类选择器目标&#xff1a;能够使用 结构伪类选择器 在…

MemPrompt: Memory-assisted Prompt Editing with User Feedback

Paper name MemPrompt: Memory-assisted Prompt Editing with User Feedback Paper Reading Note URL: https://arxiv.org/pdf/2201.06009.pdf TL;DR ACL 2022 Workshop CSRR 文章&#xff0c;MemPrompt 将用户对模型预测错误的反馈保存下来&#xff0c;之后遇到类似的问题…

CesiumLab安装、CesiumLab账号注册以及不同授权类型的说明 CesiumLab系列教程

下载软件并安装 官方下载地址&#xff1a;http://cesiumlab.com/#/update 双击 exe 安装。 CesiumLab安装包 CesiumLab安装过程 CesiumLab需要的依赖环境 安装过程会提示 本程序依赖 VC2019 实时运行库&#xff0c;如本机已安装了 VC2019 实时运行库&#xff0c;可以点击【取…

【STM32笔记】HAL库Flash读写配置

【STM32笔记】HAL库Flash读写配置 在keil里面的默认工程配置中 Flash分配地址 程序部分为0x0800 0000到0x0810 0000 总共是0x0010 0000的大小 也就是1048576Byte 1024KB 1MB 而实际上程序部分大小应该要看硬件手册来确定 可以通过配置keil工程中size的大小 来确定程序地址的范…

实验二十七 IPSec配置

实验二十七 IPSec配置实验目的&#xff1a; 某公司由总部和分支机构构成&#xff0c;通过IPsec实验网络安全&#xff0c;保证总部和分支机构的局域 网安全通信。网络拓扑图&#xff1a;IPSec(IP Security)是IETF定义的一组协议&#xff0c;用于增强IP网络的安全性 。 IPsec的功…

【深度学习】李宏毅2021/2022春深度学习课程笔记 - Anomaly Detection(异常侦测)

文章目录一、Problem Formulation二、What is Anomaly&#xff1f;三、Applications四、Binary Classification&#xff1f;五、Categories六、Case 1&#xff1a;With Classifier七、Case 2&#xff1a;Without Labels八、Use Auto-Encoder九、More一、Problem Formulation 假…

Java之反射机制

反射机制 引出反射 我们的猫类 传统的方式 就是new 然后通过对象调用呗 用properties做的话&#xff0c;首先肯定是获取信息 读取配置文件的信息 然后我们需要创建对象是吧 但是这个时候 new classfullpath是不行的&#xff0c;因为我们实际上需要的是 类名 而不是字符串&…

2023年1月7日:fastadmin导出数据为excel格式

需求图&#xff1a; 实现方法&#xff1a; 第一种方法&#xff1a;fastadmin自带导出数据&#xff0c;直接点击下载即可 效果图第二种方法&#xff1a;自定义导出按钮&#xff0c;需要编写方法 效果图&#xff1a; 效果图代码实现 首先&#xff1a;前端按钮代码(可直接拿来用…

【HCIA-openEuler】实验手册—01【openEuler操作系统安装】

文章目录一、实验介绍1、关于本实验2、实验目的3、实验所需材料二、配置虚拟化环境步骤1&#xff1a;硬件准备步骤2&#xff1a;软件准备三、安装openEuler操作系统1、创建虚拟机步骤1&#xff1a;新建虚拟机步骤2&#xff1a;向导选择典型(推荐)步骤3&#xff1a;选择镜像文件…

MonoScene: Monocular 3D Semantic Scene Completion

Paper name MonoScene: Monocular 3D Semantic Scene Completion Paper Reading Note URL: https://arxiv.org/pdf/2112.00726.pdf TL;DR 2022 cvpr 论文&#xff0c;提出一种能在室内与室外场景均可使用的单目 SSC 方案&#xff0c;与特斯拉的 Occupancy Network 非常相似…

【Java基础】day12

一、Redis 的缓存穿透、缓存击穿、缓存雪崩是什么&#xff1f; 缓存穿透 请求不存在【 DB 和 Redis 中都不存在】的数据&#xff0c;导致请求直接打到持久层数据库中&#xff0c;导致数据库负载过高&#xff0c;甚至导致宕机。这样的请求几乎可以导致请求次次到达 DB &#xff…

Cesium中tif转经纬度投影或墨卡托地图瓦片 CesiumLab系列教程

Cesium 目前支持的影像切片规范有两种形式的&#xff1a; 1.经纬度直拉切片方式 &#xff08;GeographicTilingScheme &#xff09;&#xff0c; 2.web 墨卡托切片方式 &#xff08;WebMercatorTilingScheme&#xff09;。 根据常规传统&#xff0c;瓦片大小都是 256&#x…

数字验证学习笔记——SystemVerilog芯片验证22 ——功能覆盖率策略覆盖组

一、功能覆盖率策略 1.1 收集信息而非数据 对于一些设计&#xff0c;你需要关心的是合法的寄存器地址和非法的寄存器地址&#xff0c;可写的寄存器域和非法的寄存器域&#xff0c;而不是具体的寄存器地址数值。一旦关注的地方着眼于感兴趣的状态&#xff0c;而不是具体数值&a…