参考内容
Learning Vim The Pragmatic Way
《鸟哥的 Linux 私房菜》

Vim 可以认为是 Vi 的高级版本,Vim 可以用颜色或下划线的方式来显示一些特殊信息,您可以认为 Vi 是一个文本处理工具,而 Vim 是一个程序开发工具,现在大部分 Linux 的发行版都以 Vim 替换 Vi 了。在 Linux 命令行模式下有很多编辑器,但是 Vi 文本编辑器是所有 Unix-like 系统都会内置的,因此学会 Vi/Vim 的使用时非常有必要的,对于 Vi 的三种模式(命令模式、编辑模式、命令行模式)这里就不在做说明了,下面是一些比较常用的命令。

一般命令模式下

命令 说明
h、j、k、l 与键盘的方向键一一对应,分别为左、下、上、右,在键盘上着几个字母是排在一起的
Ctrl+f、Ctrl+b 分别对应键盘的「Page Down」、「Page Up」,我更习惯于这两个键,而不是前面的组合键
0、$ 分别对应键盘的「Home」、「End」,即移动到该行的最前面/后面字符处
n<Enter> n 为数字,光标向下移动 n 行
/word、?word 向光标之上/下寻找一个字符串名称为 word 的字符串
n、N 如果我们刚刚执行了上面上面的 /word 或 ?word 查找操作,那么 n 则表示重复前一个查找操作,可以简单理解为向下继续查找下一个名称为 word 的字符串,N 则与 n 刚好相反
:n1,n2s/word1/word2/g 在第 n1 行与 n2 行之间寻找 word1 这个字符串,并将这个字符串替换为 word2,如果前面的 n1,n2 使用 1,$ 代替则表示从第一行到最后一行,最后的 g 后面可以加个 c,即 :1,$s/word1/word2/gc,这样就会在替换钱显示提示字符给用户确认(confirm)
x、X 分别对应键盘的「Del」、「Backspace」键
dd、yy 删除/复制光标所在的那一整行
p、P p 将已复制的数据在光标下一行粘贴,P 粘贴在光标上一行
u 恢复前一个操作,类似于 Windows 下的 Ctrl+Z
Ctrl+r 重做上一个操作
. 小数点,重复上一个操作

命令行模式下

命令 说明
:w 将编辑的数据写入硬盘中
:w! 若文件属性为只读,强制写入该文件,不过到底能不能写入,还是跟文件权限有关系
:q、:q! 与 w 一样,q 为关闭的意思
:r [filename] 在编辑的数据中读入另一个文件的数据,即将[filename]这个文件的内容追加到光标所在行的后面
:w [filename] 将编辑的数据保存为另一个文件
:set nu/nonu 显示/不显示行号

编辑模式下

组合键 作用
[ctrl]+x -> [ctrl]+n 通过目前正在编辑的这个文件的内容文字作为关键字,予以自动补全
[ctrl]+x -> [ctrl]+f 以当前目录内的文件名作为关键字补全
[ctrl]+x -> [ctrl]+o 以扩展名作为语法补充,以 Vim 内置的关键字予以补全

当我们在使用 Vim 编辑器的时候,Vim 会在与被编辑的文件目录下再建立一个名为.filename.swp的文件,我们对文件的操作都会记录到这个 swp 文件中去,如果系统因为某些原因掉线了,就可以利用这个 swp 文件来恢复内容。如果存在对应的 swp 文件,那么 Vim 就会主动判断当前这个文件可能有问题,会给出相应的提示。

我们也可以给 Vim 环境设置一些个性化的参数,虽然在命令行模式下可以使用:set来设置,但是这样每次设置实在是太麻烦,因此我们可以设置一些全局的参数。Vim 的整体设置值一般放在/etc/vimrc中,我们一般通过修改~/.vimrc这个文件(默认不存在)来设置一些自己的参数,比如:

" 该文件的双引号是注释
set nu "在每一行的最前面显示行号
set autoindent " 自动缩进
set ruler " 可显示最后一行的状态
set bg=dark " 显示不同的底色色调
syntax on "进行语法检验,颜色显示,比如 C 语言等

最后附上一张命令速查卡,此图来源于Learning Vim The Pragmatic Way,PDF 版下载链接在这里