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,相当于“另存为”。