Vim 自产生以来,历经不断革新,现在最新版的 Vim 已经具有很强大的功能,使用户能够更加轻松、便捷地使用它。
1Vim 的工作模式
1.1命令模式
开始进入 Vim 时处于命令模式,如果已经处于插入模式或末行模式,按<ESC>键可回到命令模式。在这种模式下,只能用按键指令,不能输入文字。
1.2插入模式
插入模式就是要把文本插入到要编辑的文件,插入位置根据所用的命令不同而不同。
从命令模式进入插入模式需要键入 i、a 、o、 r 及 I、A、 O、R等命令。在完成文本的输入后,必须用<ESC>键返回命令模式。
1.3末行模式
末行模式因命令出现在屏幕的最底部一行而得名。在命令方式下,键入某些特殊字符,如/、?、 :等,光标跳到屏幕末行并显示键入的末行字符,此时键入命令后回车,Vim 会根据需要在末行显示出一定的响应信息,同时将自动回到命令状态。
2 Vim 编辑文件的基本过程
在命令行键入 Vim testfile,其中 testfile 代表要打开的文件名,如果文件不存在,Vim 将自动新建一个名为 testfile 文件。
进入 Vim 后,按<i>键进入插入模式,即可进行文件的编写工作。光标可以由方向键来移动。
<BackSpace>键可以删去前一个字符。
写好文件后按<ESC>键可回到命令模式,然后用:w 存档(注意,是冒号命令),这时还不会离开
Vim,要离开可按:q,也可以合起来用:wq,代表保存后离开。
2.1光标的移动
注意:本节所述都是在命令模式下的操作。
2.1.1
基本的光标移动
左 h Backspace 或左方向键
下 j Enter 或+或下方向键
上 k -或上方向键
右 l Space 或右方向键
向下翻页 Ctrl+f PageDown
向上翻页 Crtl+b PageUp
2.1.2复杂光标移动
0 移至行首,或是<Home>键
~ 移至第一个非空白字符
$ 移至行尾,或<End>键
G 移至文件尾(最后一行的第一个非空白字符处)
gg 移至文件首(第一行第一个非空白字符处)
w 移至下一个字首
W 同上,但会忽略一些标点符号
e 移至后一个字字尾
E 同上,但会忽略一些标点符号
b 移至前一个字字首
B 同上,但会忽略一些标点符号
H 移至屏幕顶部第一个非空白字符
M 移至屏幕中间第一个非空白字符
L 移至屏幕底第一个非空白字符
n| 移至第 n 个字符处
:n 或 n G 移至第 n 行行首,注:n 表示具体数字,如 1,2,3……
) 移至下一个句首
( 移至上一个句首
} 移至下一个段落首
{ 移至上一个段落首
2.2基本编辑指令
2.2.1进入插入模式指令
i 在光标所在字符前开始输入文字(insert)
a 在光标所在字符后开始输入文字(append)
o 在光标所在行下开一新行来输入文字(open)
I 在行首开始输入文字
A 在行尾开始输入文字
O 在光标所在行上开一新行来输入文字
J 将下一行整行连接到本行(joint)
2.2.2删除指令
x 删除光标所在处的字符。也可用<Del>键。
X 删除光标所在位置前的字符。
dd 删除一整行。
dw 删除一个字(delete word)。
dG 删至文件尾。
D 删至行尾,或 d$(含光标所在处字符)。
d^ 删除当前光标到行首的字符
d$ 删除当前光标到行尾的字符
2.2.3取代及还原
r 取代光标所在处的字符。
R 取代字符直至按<Esc>为止。
cc 取代整行内容。或大写 S 亦可。
cw 替换一个英文字。
~ 光标所在处之大小写转换。
C 取代至行尾,即光标所在处以后的字都会被替换。或 c$。
c0 取代至行首,或 c~。
u 撤销前面的操作,即 undo,撤销的次数是没有限制的。
U 在光标没离开本行之前,回复所有编辑动作。
2.2.4复制
yy 复制光标所在行整行。或一个大写 Y。
2yy 复制两行。
y0 复制至行首,不含光标所在处字符。
y$ 复制至行尾。含光标所在处字符。
yw 复制一个字。
yG 复制至文件尾。
y1G 复制至文件首。
2.2.5查找与替换
查找
/ 按/会在左下角出现一个/,键入要查找的字串,按回车开始查找。
? 和/相同,只是/是向前(下)找,?则是向后(上)找。
n 继续查找。
N 继续寻找(反向)。
* 寻找光标所在处的字(要完全符合)。
# 同上,但*是向前(下)找,#则是向后(上)找。
g* 同*,但部分符合即可。
g# 同#,但部分符合即可。
替换
语法:[range]s/pattern/string/[c,e,g,i]
用 string 替代 pattern。Range 指的是范围,1,7 指从第一行至第七行,1,$指从第一行至最后一行,也就是整篇文章,也可以%代表;c 每次替换前会询问;e 不显示 error;g 不询问,整行替换;i 不分大小写。
2.3 离开
:q 如文件有修改而没保存,会警告,且无法离开。
:q! 放弃所有修改,强迫离开。
:wq 保存文件后离开,即使文件没有修改也会再保存一次。
😡 保存文件后离开,但如果文件没有修改,则不会做保存的动作。
:ZZ 和:x 完全一样。
:w 另存,不加文件名就是写入原文件。