一、什么是Vim

Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。

二、Vim键位图

三、Vim的三种模式

Vim 有三种模式,分别是命令模式输入模式编辑模式,这 3 种工作模式可随意切换。

1、命令模式

当我们用Vim 编辑文件时,默认处于命令模式。此模式下,敲击键盘动作会被识别为命令,而非输入字符,可使用方向键(↑、↓、←、→)或 k、j、h、i 移动光标的位置。

命令模式下常用的几个命令:

命令 功能描述
i 切换到输入模式,可以输入字符
x 删除当前光标所在处的字符
: 切换到编辑模式,可以底部光标闪烁处输入命令

2、输入模式

在命令模式下按 i 键进入输入模式,按 Esc 键即可返回命令模式。

在输入模式下,Vim 可以对文件执行写操作,按键及功能描述见下表。

按键 功能描述
i 在当前光标所在位置插入随后输入的文本
I 相当于光标移动到行首,再执行 i 命令
o 在光标所在行的下面插入新的一行
O 在光标所在行的上面插入新的一行
a 在当前光标所在位置之后插入随后输入的文本
A 相当于光标移动到行尾,再执行a命令
Enter 回车键,换行
Backspace 删除光标前一个字符
Delete 删除光标后一个字符
Home/End 移动光标到行首/行尾
Page Up/Page Down 上/下翻页
Esc 退出输入模式,切换到命令模式

3、编辑模式

在命令模式下按下**:**(英文冒号),进入编辑模式。

编辑模式可以输入单个或多个字符的命令,可用的命令非常多。在后面使用实例中会做介绍。

按ESC键可随时退出编辑模式。


四、Vim 使用实例

1、打开文件

打开一个自己编写的文件,默认进入命令模式:

[root@wayne:~]# vim myvim.txt

image-20230309162950054

文件的下方会显示文件的一些信息,包括文件的总行数和字符数,以及当前光标所在的位置等。

2、编辑文件

在命令模式之中,按下 i, o, a 中的任意一个字符进入输入模式,此时左下角状态栏中会出现 –INSERT- 的字样。

Vim 插入文本

在输入模式中,除了 Esc 键之外,其他的按键都可以视作为一般的输入按键。

image-20230309165424079

Vim 查找文本

快捷键 功能描述
/abc 从光标所在位置向前查找字符串 abc
/^abc 查找以 abc 为行首的行
/abc$ 查找以 abc 为行尾的行
?abc 从光标所在为主向后查找字符串 abc
n 向同一方向重复上次的查找指令
N 向相反方向重复上次的查找指定

如查找字符串 "new"

image-20230309165809043

Vim 替换文本

快捷键 功能描述
:s/old/new 用new替换当前行第一个old
:s/a1/a2/g 将当前光标所在行中的所有 a1 用 a2 替换
:n1,n2s/a1/a2/g 将文件中 n1 到 n2 行中所有 a1 都用 a2 替换
:%s/a1/a2/g 将文件中所有的 a1 都用 a2 替换
:%s/^/xxx/g 在每一行的行首插入xxx,^表示行首
:%s//xxx/g −在每一行的行尾插入xxx,/xxx/g在每一行的行尾插入xxx,表示行尾

如替换”new” 为 ”old ”

image-20230309170722205

Vim 删除文本

快捷键 功能描述
x 删除光标所在位置的字符
dd 删除光标所在行
ndd 删除当前行(包括此行)后 n 行文本
dG 删除光标所在行一直到文件末尾的所有内容
D 删除光标位置到行尾的内容
:a1,a2d 函数从 a1 行到 a2 行的文本内容

如按dd删除第3行

image-20230309174510739

Vim 复制粘贴文本

快捷键 功能描述
p 将剪贴板中的内容粘贴到光标后
P(大写) 将剪贴板中的内容粘贴到光标前
y 复制已选中的文本到剪贴板
yy 将光标所在行复制到剪贴板,此命令前可以加数字 n,可复制多行
yw 将光标位置的单词复制到剪贴板

如先按yy,复制第3行,再按p粘贴

image-20230309174623476

3、保存退出

输入模式是不可以直接切换到编辑模式的,需要先按下 Esc键回到命令模式,此时左下角的 – INSERT – 会消失。再按下**:**(英文冒号),进入编辑模式。

命令 功能描述
:wq 保存并退出 Vim 编辑器
:wq! 保存并强制退出 Vim 编辑器
:q 不保存就退出 Vim 编辑器
:q! 不保存,且强制退出 Vim 编辑器
:w 保存但是不退出 Vim 编辑器
:w! 强制保存文本
:w filename 另存到 filename 文件
x! 保存文本,并退出 Vim 编辑器
ZZ 直接退出 Vim 编辑器

五、Vim 其他按键说明

快捷键 功能描述
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号!
[Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d] 屏幕『向下』移动半页
[Ctrl] + [u] 屏幕『向上』移动半页
+ 光标移动到非空格符的下一行
- 光标移动到非空格符的上一行
0 或功能键[Home] 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End] 移动到这一行的最后面字符处(常用)
H 光标移动到这个屏幕的最上方那一行的第一个字符
M 光标移动到这个屏幕的中央那一行的第一个字符
L 光标移动到这个屏幕的最下方那一行的第一个字符
G 移动到这个档案的最后一行
nG n 为数字。移动到这个档案的第 n 行
gg 移动到这个档案的第一行,相当于 1G 命令
u 撤销前一个动作(常用)
[Ctrl]+[r] 恢复上一个动作(常用)
. 重复前一个动作 (常用)

以上,如果觉得对你有帮助,点个赞再走吧,这样@知微之见也有更新下去的动力!

也欢迎私信我,一起交流!