vim共有3种模式,分别为一般模式、编辑模式和指令列模式。其中,使用vim打开一篇文档默认进入一般模式,在此模式下可以进行一般的操作;通过按(i、I、a、A、r、R)键进入编辑模式,可以对文本内容进行编辑,而按ESC键回到一般模式;通过按(:、/、?)等键进入指令列模式,可以输入指令进行查找、保存等操作,同样,按ESC键回到一般模式。
需要注意的是,编辑模式、指令列模式都可以和一般模式进行切换,但编辑模式和指令列模式之间不可以直接切换。
另外,本文中,每个命令后面的‘:’不是命令本身,请注意。
一、光标的移动命令
使用vim打开文档后,默认进入一般模式。此时可以使用不同的按键快速移动光标。
k,j,h,l:上下左右光标移动命令,也就是右手在键盘上放置的位置部分,当然也支持使用键盘的上下左右键进行移动。
另外,如果想快速移动光标,也可以按下n(kjhl),n代表数字。比如按下20k,则光标向上移动20行。
ctrl+f:屏幕向下移动一页,当然也支持pagedown。
ctrl+b:屏幕向上移动一页,当然也支持pageup。
0:数字0可以使光标快速移向本行行首,当然也支持home键。
$:此按键可以使光标快速移向本行行尾,当然也支持end键。
G:光标移动到最后一行。
nG :n为行数,该命令立即使光标跳到指定行。
gg:光标快速移动到文件的第一行。
n<Enter>:光标向下移动n行
二、选择命令
在一般模式下,可以按相应的命令,以进行选择。
v:按下v键,可以进行选择。此时再通过上下左右键移动光标,则可以按字符选择。
V:按下V键,可以进行按行选择。
ctrl+v:此时可以进行区域的选择。相当于在word下按着alt进行选择。
y:将选择好的复制。
d:将选择好的删除
三、编辑命令
1)删除命令
x,X:在一行中,x代表向后删除一个字符(类似del键),而X代表向前删除一个字符(类似backspace键)
nx:n为数字,代表连续删除后面的n个字符
dd:删除光标所在的行
ndd:删除n行(包含光标所在行,向下的n行)。
2)查找命令
在一般模式下,输入相应命令可进入指令列模式,以进行查找。
/string:从光标处向下查找string这个关键字
?string:从光标处向上查找string这个关键字
n:当查找后,按n可重复查找
N:当查找后,按N可反向重复查找
3)替换命令
:n1,n2s/old/new/g:n1与n2为数字。此命令表示在行n1和行n2之间查找old关键字,并替换为new。
:1,$s/old/new/g:此命令表示从1行开始直到最后一行,查找old关键字,并替换为new。
另外,在上述两个命令中,如果在g后面加上c,则表示每次替换需要用户的确认。
4)复制命令
yy:复制一行
nyy:复制n行
5)粘贴命令
p,P:p表示从光标所在行的下一行开始粘贴,而P表示从光标所在行的上一行开始粘贴
6) 插入命令
在一般模式下,可以按不同的按键以进入编辑模式,进行文档的修改。
i,I:此两个命令代表从一般模式进入插入模式。其中,i表示从目前光标所在处插入,I代表从光标所在行的第一个非空格符处插入。进入插入模式后,文档的右下角会出现“INSERT”提示。
a,A:此两个命令也可进入插入模式。其中,a代表从目前光标的下一字符处开始插入,而A代表从光标所在的末尾开始插入。
o,O:此两个命令也可以进入插入模式。其中,o代表在目前光标所在行下插入一行,而O代表在目前光标所在行上插入一行。
r,R:此两个命令可以从一般模式进入替换模式。其中,r会替换光标所在字符1次就自动退回一般模式,而R可以一直替换。
进入插入模式后,当然也支持键盘上的上下左右、enter、home等键的操作。
7)反悔命令
u:相当于Windows下的ctrl+z,即反悔一次。可多次反悔。
ctrl+r:相当于Windows下的ctrl+主,即重做反悔的上一个动作。
.:小数点命令,代表重做前一个动作。需要注意的是,它和ctrl+r是不同的。ctrl+r代表反悔后的重做,而小数点命令是重做前一个动作。
四、多文档的编辑
可以使用vim一次打开多个文档,也可以将同一个文档打开多次。
当打开两个或以上的文档的时候,可以使用相应的按键进入多文档的编辑。
:n:编辑下一个档案
:N:编辑上一个档案
:files:列出目前vim开启的所有档案
另外,vim也支持多窗口显示。即在同一个屏幕上同时显示多个文档的情况。
在一般模式下,按下:sp命令可再次打开该文档并多窗口显示,按下:sp filename命令,可打开filename那个文档并多窗口显示。
当多窗口显示后,有以下命令可以操作。
ctrl+w+k或ctrl+w+↑:切换到上面的窗口
ctrl+w+j或ctrl+w+↓:切换到下面的窗口
五、保存退出
在一般模式下,通过按相应的按键,可以进入指令列模式,即可以在屏幕下方输入相应指令,完成保存退出等功能。
1)显示/关闭行号
:set nu:在所有行之前显示行号
:set nonu:关闭所有行之前的行号
2)保存退出
:q:退出vim
:q!:不保存修改,强行退出vim
:w:保存修改过的文件内容
:wq:保存修改内容并退出vi
:wq [filename]:将文档存为filename,相当于“另存为”。