目录

Linux开发工具vim

什么是vim?

vim的操作使用

vim的模式

普通/正常模式常见命令

光标移动:

光标定位:

复制与粘贴:

撤销操作:

删除操作:

注释操作:

底行/命令模式常见命令

保存退出操作:

批量化替换:

分屏操作:

vim的配置


Linux开发工具vim

什么是vim?

Vim 是一款跨平台、开源的轻量级文本编辑器,核心特点是“以键盘快捷键为核心操作逻辑”,不依赖图形化界面(也有图形化版本,但非主流),能在终端/命令行中直接运行,广泛用于代码编写、文本修改等场景,尤其在 Linux/macOS 生态中极为常用。

通俗点来说vim是一款编辑器,平时大家是怎么编写代码的呢?怎么编译代码呢?debug代码呢?vim可以满足多种应用场景,它类似于windows下的集成开发工具vs2022

Linux当中是用vim编辑器来编写代码的,gcc/g++编译器用来编译代码,gdb调试器用来调试代码,这些都是独立的工具,而windows下的vs2019是集成开发工具

vim的操作使用

vim是什么呢?文件编辑器,可以用来编写代码

那么怎么使用vim呢?

vim test.c

当test.c存在时,就可以直接在文件里面写代码;

当test.c不存在时,就会重新新建一个test.c文件,并在里面编写代码

  • vim是一个多模式编辑器

这是 vim 最核心、也是新手入门最难的地方——它不像记事本那样“打开就能输入”,而是分为 3 种核心模式,不同模式下键盘按键的功能完全不同,目的是通过“模式切换”减少鼠标操作,提升编辑效率

  • vim的模式

普通模式/正常模式(Normal Mode) 

插入模式/编辑模式(Insert Mode) 

命令模式/底行模式(Command Mode)

  1. 普通模式/正常模式(Normal Mode):打开 vim 后的默认模式,不能直接输入文字,核心用于“移动光标”“快速操作”(比如复制一行、删除一段、替换字符)。
  2. 插入模式(Insert Mode):只有进入这个模式,才能像记事本一样输入文字。从普通模式按“i”(在光标前插入)、“a”(在光标后插入)就能切换进来,按“Esc”键可退回普通模式。不过有⼀点要特别注意,进入vim之后,是处于[普通模式],你要切换到[插入模式]才能够输入文字。
  3. 命令模式/底行模式(Command Mode):用于执行“全局操作”,比如保存文件、退出 vim、查找文字。从普通模式按“:”(冒号)就能进入,输入“w”表示保存,输入“q”表示退出,输入“wq”表示保存并退出。
  4. 替换模式(Replace Mode)
  5. 试图模式(VISUAL BLOCK)

三种模式如何切换?

任何模式回到命令模式,都可以按Esc;

插入模式进入底行模式,首先需要回到普通模式(Esc),然后 shift+:就可以了;

底行模式进入命令模式:按Esc就直接回到命令模式;

底行模式进入插入模式:按Esc进入命令模式,然后 i 进入插入模式

命令模式和底行模式是同一个模式,只是不同的叫法——因指令在屏幕底部输入,所以常叫“底行模式”;本质是通过输入命令来操作,官方更规范的说法是“命令行模式(Command-line Mode)”。
进入方式、功能完全一样:从正常模式按 shift + ;/:  进入,在底部输入指令(如 :w 保存、 :%s/旧内容/新内容/g 批量替换),按回车执行,按 Esc 退回正常模式。

普通/正常模式常见命令

光标移动:

shift+g/G : 光标直接定位到文本末端(最后一行)

gg : 光标直接定位到文本开始(第一行)

数字n + shift+g/G : 光标定位到文本第n行

shitf + 4/$ : 定位到当前行结尾

shift + 6/^ : 定位到当前行开始

光标定位:

h : 左      j : 下     k : 上     l : 右

  • 为什么我们的键盘有上下左右键还用hjkl这样的按键呢?因为早期的键盘是没有上下左右键的
  • 记忆:h(最左边),j(jump跳楼),k(king高高在上),l(最右边)

w:以单词为单位进行后移

b:以单词为单位进行前移

nb,nw:按照n个单词进行前移或者后移

复制与粘贴:

yy:复制当前行

n + yy:复制n行 , n代表从光标开始想要复制几行

p:粘贴,光标在哪里就粘贴到下一行

n + p:n代表想要粘贴n次

将光标放在所要复制的该行,然后输入yy,此时已经复制了,光标放在想要粘贴到的行数的前一行,然后再输入p就粘贴了;光标在哪里,就粘贴在光标所在行的下一行

撤销操作:

u:撤销上次动作 , 只要没退出vim , 随时可以撤销

ctrl + r : 撤销刚刚的撤销,相当于是反撤销

删除操作:

dd:删除光标所在行,其实功能更像剪切

ndd:删除光标所在行开始的n行内容

修改替换删除操作:

shift + `/~ : 批量化进行大小写转化

r : 替换光标位置的一个字符

n + r : 一次批量化的从光标开始连续替换内容

shift + r/R:进入替换模式(Replace Mode),进行整体文本替换 , 按esc回到普通模式

x : 删除光标所在的字符 , 从左往右删 (普通模式下删除键Backspace不起作用 , 只能用x删除)

n + x:删除光标所在的n个字符 , 从左往右删

shift + x/X:删除光标所在文本的内容,从右往左删

注释操作:

批量化多行注释(本质上是批量化添加)

  • 1. 按  Ctrl + v  进入视图模式(VISUAL BLOCK);
  • 2. 移动光标( h / j / k / l 键)选中需要注释的多行;
  • 3. 输入 大写I(shift + i)  进入到插入模式后
  • 4. 输入注释符号 //
  • 5. 最后按 Esc 键就完成了批量化注释

批量化取消注释(本质上是批量化删除)

  • 1.  按  Ctrl + v  进入视图模式(VISUAL BLOCK);
  • 2. 移动光标( h / j / k / l 键)选中 // 或者所要删除的内容
  • 3. 按 d 键就取消注释了

以上的操作都是在普通模式下进行的 , 不要和其他模式搞混了

底行/命令模式常见命令

保存退出操作:

:w :保存当前文件(“write” 缩写)  后面加 ! 表示强制保存

:q :退出当前Vim窗口(“quit” 缩写,需确保文件已保存)  后面加 ! 表示强制退出

:wq :保存文件并退出Vim窗口(常用组合) 后面加 ! 表示强制保存退出

其实前面的 : 也就是从普通模式进入底行模式时需要按的 shift + ;/:

当终端突然退出时,vim会生成临时交换文件(.swp后缀的隐藏文件),默认存放在当前路径下;再次打开vim时会弹出恢复提示。
1. 临时文件的生成

  • Vim非正常退出(如终端突然关闭)时,会在当前文件所在目录生成一个隐藏的交换文件,命名规则是: .[原文件名].swp (比如编辑 code.c ,临时文件是 .code.c.swp )。

 这个文件的作用是保存你未保存的修改,避免数据丢失。
 
2. 再次打开Vim的反应
当你再次用Vim打开原文件(比如 vim code.c ),Vim会检测到这个 .swp 文件,弹出类似下图的提示:

同时会给出操作选项(按对应大写字母选择):

  • R :恢复(加载.swp里未保存的内容)
  • D :删除.swp文件(放弃恢复,用原文件内容)
  • E :直接编辑(忽略.swp,用原文件内容)
  • Q :退出Vim,不操作

需要注意的是 : 恢复后记得手动删除 .swp 文件,避免下次重复提示

:/ + 关键词(key) + n : 对关键词key进行匹配搜索 , 按 n键一直向下搜索  (这里的n是小写n , 不代表次数n)

:! + shell的一些基本指令(pwd/ls...) : 不退出vim , 直接对代码进行编译和运行

批量化替换:

 :s/old/new :替换当前行中第一个 old(旧内容)为 new(新内容)

 :s/old/new/g :替换当前行中所有 old 为 new(“g” 表示“global”全局)

 :%s/old/new/g(常用) : 替换整个文件中所有 old 为 new(“%” 表示整个文件)

 :%s/old/new/gc :替换整个文件中 old 为 new ,且每次替换前询问确认(“c” 表示“confirm”确认)

分屏操作:

:vs : 分屏操作文件,光标在哪里,我们就编辑那个文件

  • code.h :头文件,声明了 Print() 函数(依赖 <stdio.h> 实现输入输出)。
  • code.c :实现文件,定义 Print() 函数,功能是输出5次“hahahahaha”。
  • main.c :主程序文件,在 main() 函数中调用 Print() ,作为程序入口。

  • 使用 gcc code.c main.c 将两个 .c 文件编译为可执行文件 a.out (GCC默认输出名)。
  • 运行 ./a.out 后,程序执行 Print() ,输出5行“hahahahaha”,符合代码逻辑。

多文件光标切换

Ctrl + ww : 在多个文件之间进行光标切换最后按

:wq 对每个文件逐个进行保存退出 

vim 文件名 +n : 进入文件光标定位在第n行,如果在编译代码出错了,提示出错在第几行,此时就可以直接将光标定位在该行处

!vim : 执行vim上次的命令

shift+zz : 保存退出 , 和!wq一样

vim的配置

为什么要配置Vim?


Vim的默认设置是“最小化通用版本”,很多高频需求没开启,配置的核心目的是解决默认痛点、提升编辑效率,比如:
- 默认没有行号,找代码位置要逐行数,配置后能显示行号;
- 默认Tab键是8个字符宽(代码缩进太宽),配置后可改成4个/2个字符,适配不同语言;
- 默认不支持鼠标操作,配置后鼠标能在Vim里定位、选内容,和普通编辑器一致;
- 默认没有语法高亮、代码折叠,配置后能区分代码关键词、折叠冗余代码,读代码更清晰。

vim配置文件位置

vim的配置全靠一个文件 : ~/.vimrc : 我们配置vim需要在一个.vimrc的文件里配置,而在每个用户的主目录下,都可以自己建立私有的配置文件(如果没有就新建一个),命名为“.vimrc”。

对vim做基本配置 , 本质上就是把配置项写进/home/XXX/.vimrc中

vim的环境设置参数

还需要注意的是 : vim的配置只在当前用户账号下有用

关于环境设置参数还有很多,这里就不一一说明了。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐