编辑文件:
i 在当前位置生前插入
I 在当前行首插入
a 在当前位置后插入
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行
移动
h 左移一个字符
l 右移一个字符,这个命令很少用,一般用w代替。
k 上移一个字符
j 下移一个字符
以上四个命令可以配合数字使用,比如20j就是向下移动20行,5h就是向左移动5个字符,在Vim中,很多命令都可以配合数字使用,比如删除10个字符10x,在当前位置后插入3个!,3a!<Esc>,这里的Esc是必须的,否则命令不生效。
w 向前移动一个单词(光标停在单词首部),如果已到行尾,则转至下一行行首。此命令快,可以代替l命令。
b 向后移动一个单词 2b 向后移动2个单词
e,同w,只不过是光标停在单词尾部
^ 移动到本行第一个非空白字符上。
0(数字0)移动到本行第一个字符上,
$ 移动到行尾 3$ 移动到下面3行的行尾
% 所有行
gg 移动到文件头。 = [[
G(shift + g) 移动到文件尾。 = ]]
10G 跳到第10行
f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。
查找:
/text 查找text,按n健查找下一个,按N健查找前一个。
?text 查找text,反向查找,按n健查找下一个,按N健查找前一个。
替换
:1,$s/aaa/bbb/ 从第一行到最后一行,将第一个aaa改成bbb
:1,$s/aaa/bbb/g 从第一行到最后一行,将所有的aaa改成bbb
:1,$s/aaa/bbb/c 从第一行到最后一行,将所有的aaa改成bbb(交互模式)每次遇到aaa时问你是不是需要修改,确定按y 否则n
:%s/^/#/g 注释整个文档
:1,3s/^/#/g 注释前3行
保存,退出
:wq 保存并退出
ZZ 保存并退出
:q! 强制退出并忽略所有更改
:e! 放弃所有修改,并打开原来文件。
:e! a.txt 放弃所有修改,并打开a.txt。
多文件
:split file或:new file 用新窗口打开文件
split打开的窗口都是横向的,使用vsplit可以纵向打开窗口。
Ctrl+ww 移动到下一个窗口
Ctrl+wj 移动到下方的窗口
Ctrl+wk 移动到上方的窗口
:r /etc/group 将一个文件的内容写到当前文件中
:w 保存不退出
删除
dd 删除一行
d$ 删除当前字符之后的所有字符
dgg 删除当前行之前所有行,不包括当前行
dG 删除当前行之后所有行,包括当前行
复制,黏贴
yy 拷贝当前行
5yy 拷贝当前后开始的5行
p 在当前光标后粘贴,如果之前使用了yy命令来复制一行,那么就在当前行的下一行粘贴。
u 撤销(Undo)
U 撤销对整行的操作
Ctrl + r 重做(Redo),即撤销的撤销。
字符操作
5x 删除5个字符
rx 将当前字符替换成x
其他
:set nu 显示行号
:set nonu 显示行号