Vim 基本命令入门
最近在学习 Linux,前面的基础知识学习了一下,进入了 Vim 的学习环节。感觉这个编辑器还是可以的,有特色,鼠标都不用,蛮炫酷。对于基本
的使用来讲还是很方便的。下面是一些我的学习笔记,大致就是一些常用的命令吧。这个博客就是使用 Vim 写的一个 Markdown 文档,就当是给自己练练手,加深学习的印象了。
Vim 基本概念
Vim 是从 vi 发展而来的一个功能强大、高度可定制的文本编辑器,是一款开源的软件。Vim 的基本功能模式如下图:
由图可知,Vim 基本包括三种工作模式:命令模式、插入模式和编辑模式。在终端中通过 vi
命令即可使用 Vim 打开对应文件,从而进入命令模式,此时输入的任何文本信息都会被当做命令,回车即可执行输入的这些命令。要想编辑文本信息,需要进入编辑模式,此时输入命令 a
、o
、i
都可以进入插入模式。其中,a 代表在当前光标位置的后方插入,o 代表在当前光标的下面一行插入,i 代表在当前光标位置的前面插入。此外,A
、O
、I
也可以进入插入模式,但是它们意义与其小写模式正好相反。A 代表在行尾插入,O 代表在当前光标位置的上面一行插入,I 代表在行首开始插入。进入插入模式之后,按“ESC”键即可退出插入模式,回到命令模式。
常用命令
插入命令
命令 | 含义 |
---|---|
a | 在光标当前所在位置的后面开始插入 |
A | 在光标所在行行尾开始插入 |
i | 在光标当前所在位置的前面开始插入 |
I | 在光标所在行行首开始插入 |
o | 在光标所在行的下一行开始插入 |
O | 在光标所在行的上一行开始插入 |
定位命令
命令 | 含义 |
---|---|
:set nu | 设置行号 |
:set nonu | 取消行号 |
gg | 跳转到第一行 |
G | 跳转到最后一行 |
nG | 跳转到第n行 |
:n | 跳转到第n行 |
$ | 跳转到行尾 |
0 | 跳转到行首 |
其中,值得注意的是,命令 :n
与命令 nG
具有同样的功能,从字面上看,:n
更容易记住,所以我一般使用 :n
命令。
具体使用方法:
:100
在命令模式下,输入上方的命令,回车就回跳转到第一百行。
这些常用的跳转命令最好记住。
删除命令
命令 | 含义 |
---|---|
x | 将光标所在处的字符进行剪切(删除) |
nx | 将光标之后的n的字符进行剪切(删除) |
dd | 将光标所在行进行剪切(删除) |
ndd | 将光标所在行之后的n行进行剪切(删除) |
dG | 将光标所在行到文章末尾进行剪切(删除) |
D | 将光标所在处到行尾进行剪切(删除) |
:n1,n2d | 将n1到n2行内容进行剪切(删除) |
常用的是 x
、nx
、dd
和 ndd
。
复制和粘贴
命令 | 含义 |
---|---|
yy | 复制当前行 |
nyy | 复制当前行以下的n行 |
dd | 剪切当前行 |
ndd | 剪切当前行之后的n行 |
p | 粘贴在当前光标所在行下 |
P | 粘贴在当前光标所在行上 |
替换和撤销命令
命令 | 含义 |
---|---|
r | 取代光标所在处的字符 |
R | 进入替换模式,类似于 Windows 中的 insert |
u | 撤销上一次操作 |
注意点:
- r 只替换当前光标所在处的字符,命令模式下按
r
然后按新的字符。 - R 进入替换模式,按
ESC
才能退出。
搜索和搜索替换命令
命令 | 含义 |
---|---|
/string | 搜索指定字符串,如果要忽略大小写,先输入命令 :set ic |
n | 搜索指定字符串的下一个位置 |
:%s/old/new/g | 全文替换指定字符串 |
:n1,n2s/old/new/g | 在指定范围内替换指定字符串 |
注意点:
- %s代表全文搜索。
- n1,n2s代表在n1行到n2行范围内搜索。
- g代表不会确认是否替换,如果最后是c的话,就回挨个询问是否替换。
保存和退出命令
命令 | 含义 |
---|---|
:w | 保存修改 |
:w new_filename | 另存为指定文件 |
:wq | 保存修改并退出 |
ZZ | 保存修改并退出的快捷键 |
:q! | 不保存修改强制退出 |
:wq! | 保存修改并强制退出 |
其它使用技巧
命令 | 含义 |
---|---|
:r 文件名 | 将指定文件的内容导入到光标所在位置 |
:r !命令 | 将命令运行结果导入到光标所在位置 |
:map 快捷键 触发命令 | 自定义快捷键 |
:ab old new | 在编辑时自动替换一些字符 |
注意点:
:r !命令
是一个很好用的命令,比如:r !date
可以把当前日期时间快速导入到当前光标位置。:map 快捷键 触发命令
用于自定义快捷键,在命令模式下,输入“:map ”然后输入“Ctrl+V+P”,会出现“^P”,代表快捷键为“Ctrl+P”。最后一部分触发命令是指按下快捷键后,触发的命令,比如“I#”,这代表快捷方式触发的命令为“I#”,然后按下“ESC”键。含义即为在行首添加“#”井号,快速注释。- 连续行注释:
n1,n2s/^/#/g
,代表将指定范围内的行首替换为“#”井号。其中,“^”代表行首。 :ab
是编辑时快速替换命令,当你自定义替换字符串后,当你在编辑模式下输入要替换的字符串时,空格或者回车后,这个就字符串就回立即被你定义的新字符串替换掉,很方便。
小问题记录
- 习惯了
Ctrl+S
保存修改,在 Vim 中也喜欢按,结果按了之后就出问题了,无法输入了。解决方法就是按Ctrl+Q
,退出锁屏模式。 - 编辑模式下按
Ctrl+Z
不是撤销更改,撤销更改应该进入命令模式,按u
。编辑模式下按Ctrl+Z
是强制将进程加入后台运行,会生成一个“.swap”交换文件。要正常编辑,可以手动删除交换文件,由于交互文件是隐藏文件,所以需要按ls -a
查看。
总结
以上只是一些基本的 Vim 命令,学会使用这些命令还是能够大大地增强学习乐趣。另外要想学好 Vim,最好每个命令都自己试一试,亲身体验过后,还是觉得它非常方便的。