推荐一个有关vi写的比较好的文章,总共有三部分,常用的操作都有介绍.
1.当光标在一个单词的下方时,按下K键,可以查阅该单词的man pages
2.统计一个模式出现的次数
:%s/patten//gn
需要注意的是s前边的%,意思是整篇文档范围内搜索,如果指定某两行之间,可以用如下的方式(统计第50行到第100行之间patten出现的次数)
:50,100s/patten//gn
3.使用缩写快速输入长单词
ab cn China
挡在文档中输入cn,并且空格时,vim自动把cn替换为China,在长单词比较多时非常有用
4.删除当前行
dd
删除当前字符到行尾
d$或者D
删除当前字符到行首
d0
删除当前行到最后一行
dG
删除当前行到第一行
dgg
删除当前字符到该行第n个字符c
dnfc
删除当前行以下n行
ndd
5.查找下一个(上一个)与当前光标所在单词匹配的单词
*(#)
可以利用:set ignorecase忽略大小写
如下两个命令同样可以匹配单词,不过条件放宽到字符串中有匹配的即可
g*(g#)
定位到与当前括号匹配的另一个括号
%
定位到当前代码块的起始处
[{
6.录制宏
qa(a是宏的名字,当然可以是其它的字符)
结束录制
q
需要注意的是如果想要对多行进行操作,在结束录制前要执行向下一行(j)的操作,这样才可以正常的用:n@a重复多次宏操作
为多个要输出的字符串添加printf语句的方法如下:
qa
0
i
printf("
$
");
j
q
然后用命令10@a,即可对当前行以下10行进行添加printf语句的操作
7.无条件退出(不保存)
ZQ
存盘退出
ZZ
8.跳转到最近修改过的位置
'.(单引号+句点)
9.大小写转换
vi中大小写转换的命令是
gu 和 gU
非常形象,gu是转换为小写,gU是转换为大写,以下只给出转换为大写的情况,小写的只需改为小写u即可
把当前光标所在单词转换为大写
gUw
把当前光标所在行全部字符转换为大写
gUU
把当前光标所在行全部字符转换为小写
guu
把包括当前行在内的以下三行转换为大写(同样可以用在包括当前单词在内的以下三个单词)
3gUU
把整篇文章转换为大写
gggUG(相当于gg gU G)
当前光标到行尾字符转换为大写
gU$
当前光标到行首字符转换为大写
gU0
当前光标到文档结尾转换为大写
gUG
当前光标到文档首部转换为大写
gU1G
当前光标所在字符大小写转换
~
在可视模式下把选中的内容转换为大写
U
10.显示当前编辑文件的信息(包括路径,文件名,读取状态等)
1 CTRL+G
不加前边的数字,只会显示文件名字,不显示文件路径
11.同时打开多个文件,并且分屏显示
//横向显示,相当于split
vim -o file1 file2 file3
//纵向显示,相当于vsplit
vim -O file1 file2 file3
12.删除匹配行
下面的命令删除所有注释(每行注释都以#开头)
g/^#/d