vim基本操作
1、复制/粘贴/删除
1.1 复制:
yy #复制当前行
5yy #复制当前行开始的5行
1.2 粘贴:
p #粘贴到下一行
P #粘贴到上一行
1.3删除
D #当前光标开始删除到行尾
dd #删除当前行
ndd #从当前行开始向后删除n行
d1G #删除第1行到当前行的数据
dnG #删除第n行到当前行的数据
dG #删除当前行到最后一行的数据
x #向后删除1个字符
nx #向后删除n个字符
X #向前删除1个字符
daw #删除一个单词(包括词尾空格) : (dw是删除光标所在位置到下个字的第一个字母,因此如果我们要用dw删除整个单词,就需要先将光标移动到词首,这样很不方便。使用daw就可以比较方便的做到这一点。这里的aw意为A Word)
diw #删除一个单词(不包括词尾空格)::
2、搜索
/str #从光标位置向下搜索str
?str #从光标位置向上搜索str
n 找下一个
N 找上一个
* #向下搜索当前光标下的word,
# #向上搜索当前光标下的word
3、替换
:%s/abc/123/g #把abc全部替换成123
:%s/abc/123/gc #同上,但需要用户一个个确认是否替换
4、撤销
u #退回前一个动作
ctrl+r #重复前一个动作
:e! #文档还原到原始状态
5、插入
i 在光标前插入
I 在行首插入
a 在光标后插入
A 在行末插入
o 在下一行插入
O 在上一行插入
r 输入替换光标位置字符
R 进入输入替换模式
- 大小写转换
Ctrl+p 插入模式下进行单词补齐(很有用 ^_^)
6、保存和退出
:w 保存
:w! 强制保存
:w fileName 文件另存为fileName
n1,n2 w fileName 将n1行到n2行数据另存为fileName
:q 退出
:q! 强制不保存退出
:qw! 强制保存退出
:x 保存并退出
7、光标移动
基本移动:
hjkl 左下上右
w移动到下个单词的词首 b移动到上个单词的词首
e 移动到下个单词的词尾 ge移动到上个单词的词尾
^ 移动到当前行的第一个非空白字符上
g_ 移动到当前行的最后一个非空白字符上
0 / <home> 光标到行首 $ / <End>光标到行尾
gg 光标到文档第一行 G 光标到文档最后一行
H 跳转到当前屏幕中的首行
M 跳转到当前屏幕的中间一行
L 跳转到当前屏幕的尾行
nG / :n<enter> 光标到第n行
n<enter> 向下移动n行
n<space> 向后移动n字符
pageup /ctrl+b 向上翻页
pagedown/ ctrl+f向下翻页
高级移动:
跳到最后修改的那一行 : '. (很有用 _)
跳到最后修改的点 : `. (不仅跳到最后修改的那一行,还要定位到修改点)
跳到当前变量在当前文件的定义处: gd (其实是跳转到当前变量在此文件中第一次出现的地方,不过一般来说,第一次出现的地方也就是变量定义的地方)
在当前位置作标记: ma (用字母a标记当前光标所在的位置,这里的a可以是任意字母)
跳转到标记a处 :`a (同样的,这里的a可以是任意字母,只要你用了该字母做标记)
跳转到上一次光标所在处: (相当有用,比如看代码时不小心误按了n,光标一下子不知道跳到哪了,就可以输入
迅速回到原来的位置。再比如在看代码时,如果看到了一个不太清楚含义的变量,则可以先键入gd跳到定义处,再键入``回到刚才浏览的地方。)
8、块操作
v 字符选择 光标经过的字符被选中
V 行选择 光标经过的行被选中
ctrl+v块选择 矩阵方式选中,这时你会看到vim的左下方出现了VISUAL BLOCK 的字样。用j键向下移动,你会发现Vim以高亮为你选择了一条矩形文本块。移动到需要注释代码的最后一行,键入I进入插入模式,这时光标跳回到了文本块的第一行,键入 //,按下结束插入,你会发现刚刚选择的文本块的所有行都被加上了//。是不是很爽?
y 复制被选中的数据
d 删除被选中的数据
9、多文件编辑
vim file1 file2 同时编辑两个文件file1和file2
:files 列出vim当前打开的文件列表
:n 编辑下一个文件
:N 编辑上一个文件
10、其他操作
:set nu 显示行号
:set nonu 取消行号
:r fileName 把fileName文件里的内容插入到当前光标所在的位置下
:!command 暂时离开vim,执行command命令,如::df -h