如题所示,本文为Vim入门教程,文章涵盖Vim基本的操作:插入、替换、删除、搜索、修改、撤销、重做等等,以及笔者个人的理解和说明。

光标移动

方向键

    k
h       l
    j

光标移动的方向键是hjkl,当然还有默认的方向键。要记住hjkl其实很容易,以j为中心:

Command Description
j 形似下箭头,使光标向下移动。
h 位于左边,使光标向左移动。
l 位于右边,使光标向右移动。
k 使光标向上移动。

其他

Command Description
0 使光标移动至行首。
$ 使光标移动至行尾部,可记作end of line
xw 使光标移动x个单词,w可记作word,比如2w,使光标移动两个单词,并位于第二个单词的首个字符处。
xe 使光标移动x个单词,e可记作end of word,这个和xw相似,区别是移动后,光标移动后,位于第x个单词的尾部字符处。

删除

Command Description
x 删除一个字符。
dw 删除一个单词,可记作delete word
dxw 删除x个单词,可记作delete x words,比如:d2w
d$ 删除当前光标位置到行尾的的所有字符,$可记作end of line
dd 删除整行,此外dd可接受一个数字前缀x,表示删除x行,比如:2dd

撤销与重做

Command Description
u 撤销上一个命令,可记作undo
U 撤销当前行所有的修改。
CTRL-R 重做,可记作redo

插入

进入输入模式,最常用的是i命令,可记作insert。 但是如果需要追加内容的话,i是无法实现的,此时我们需要使用A命令,可记作append,它使光标位于行尾。

Command Description
i 光标位置不变,进入输入模式,可记作insert
a 光标向后移动一个字符,并进入插入模式,可记作append
A 光标处于当前行行尾,并进入插入模式,可记作append
o 在当前行下添加新行,并进入插入模式,意为open
O 在当前行上添加新行,并进入插入模式。

替换

Command Description
rx 将当前光标处的字符替换为xr可记作replace
R 进入替换模式。
:s/old/new 将当前行第一个old字符串替换成news意为substitute
:s/old/new/g 将当前行所有old字符串替换成newg可记作globally
:#,#s/old/new/g #为行号,将指定行之间的所有old字符串替换成new,比如:1,10s/old/new/g
:%s/old/new/g 将文中所有的old字符串替换成new
:%s/old/new/gc 将文中所有的old字符串替换成new,但在替换前会显示确认提示。

修改

如果单词错误过多,用替换来操作是很不方便的,这类情况就需要用到修改命令:

Command Description
ce 将当前光标位置到单词尾部的字符删除,并进入输入模式,c可记作changee可记作end of word
cw 删除一个单词,并进入输入模式。
cxw 删除x个单词,并进入输入模式。
c$ 删除当前光标位置到行尾的的所有字符,并进入输入模式,$可记作end of line

复制和粘贴

首先我们需要使用v命令选择需要复制的文本,选中后使用yyank)进行复制,最后使用ppaste)命令即可粘贴。

y命令也可以类似d命令那样:

  • yw - 复制一个单词。
  • yxw - 复制x个单词。
  • y$ - 复制当前光标处到行尾的内容。
  • yy - 复制整行。

搜索

此处将介绍三个搜索命令:/?%

Command Description
/ /后面加上要搜索的内容(区分大小写),然后回车即可进行搜索,n继续向下搜索,N向前搜索。
? ?/用法一致,只是搜索方向相反。
% %会匹配()[]{}

搜索默认是区分大小写的,我们可以通过:set ic 忽略大小写(ignore case)。

保存和退出

Command Description
:w :w保存当前的修改,可记作write,也可以指定保存的文件名,比如:w filename,则会将内容保存到filename
:q :q退出编辑,可记作quit

wq可以一起使用,如:wq则表示保存并退出。

执行外部命令

Vim中,我们还可以执行外部的命令,比如:!ls则会执行外部命令ls

其他命令

Command Description
:no 跳到行no
#G 跳到行#
G 跳到文件底部
gg 跳到文件顶部
CTRL-O 返回上一个位置
CTRL-I 前进下一个位置
:set nu 显示行号
:set ic 忽略大小写(ignore case
:set noic 区分大小写(no ignore case

练习

对于笔者来说,光看不练是无法记住的,所以建议经常使用和练习,才能熟练地使用Vim。另外我推荐一款名为vimtutor的练习脚本(安装Vim自带的)。