常用的vim命令总结

vim就不多介绍了,很好用很强大。在windows下可以用gvim,配置一下_vimrc文件,再配合cscope和ctag等工具,就是一个功能强大的IDE。

常用的命令在这里总结下,以后忘了可以看看,部分摘自网络轻快的VIM和部分网摘。

首先记着它的三种模式,命令模式,插入模式,可视模式。

常用的命令:分类一下,无非是编辑相关的,移动,复制,粘贴,插入,删除等操作。

窗口相关的,多窗口,窗口分割和tab标签。

命令执行相关的以及配合cscope和ctag函数间查找和跳转的。

执行外部命令的,!make,find等等。。。

Vim的quickfix模式等等,可以方便的定位到编译的错误处。。

先来张截图:


首先是移动,

进入vim后键入:
'0
即回到当初你编辑的位置
PS: 如果想把光标停止在指定的行, 这样
vim +n urfile // n为行号
如果要停留在行尾, 这样
vim + urfile
整行移动

0            移动到行首
$            移动到行末
+            移动到下一行开头
-            移动到上一行开头
这里需要注意的是+ -和上面的j k有什么不同之处

j k也是移动到上一行和下一行,但它们移动的是光标所在的位置

+ -不管你的光标在何处,总是移动到下一行或上一行的行首
单词移动

W w            移动到下一个单词开头
E e            移动到下一个单词结尾
B b            倒退到上一个单词开头
需要注意的是,E会忽略标点符号,如:I‘m,e会当成两个单词,E则不会

同样,在命令前加上数字代表执行次数,如:2w,表示往下移动2个单词

Ctrl+f            往前滚动一整屏
Ctrl+b            往后滚动一整屏
Ctrl+d            往前滚动半屏
Ctrl+u            往后滚动半屏

Ctrl+e            往后滚动一行        
Ctrl+y            往前滚动一行

看似比较多,但是可以根据键盘的位置来进行记忆,并且下面两个也不常用

上面的滚屏都有一个共同点,就是会改变光标的位置,且屏幕也在改变

如果想让光标维持在原来的位置实现滚屏请看下面

用z调整光标

z<Enter>        将光标所在行移动到屏幕顶端
z.              将光标所在行移动到屏幕中间
z-              将光标所在行移动到屏幕低端
tips:980z<Enter>可以将第980行移动到屏幕顶端

好吧,有时候你其实不想滚屏,你只想在当前屏幕中移动

请往下看

在屏幕中移动

H            移动到屏幕顶端的行
M            移动到屏幕中央的行
L            移动到屏幕底端的行

nH           移动到屏幕顶端往下的第n行
nL           移动到屏幕顶端往上的第n行
据我猜测这三个字母应该是HIgh、Middle和Low的缩写,其实挺好记的

多练习几遍就行了,需要注意的是:这里只是光标的位置变化,和上面两种不同

tips:你可以用+ -和j k实现同样的位置变化,只不过要操作多次而已

+ -和j k的区别忘了吗?往上看看吧

在当前行移动

^            移动到当前行的第一个非空格处
n|           移动到当前行的第n列
这里的^与上面的0通常情况下表示的位置是一样的

而n|,个人感觉还没有h l方便,慢慢的数出行数还不如直接按着h l 左右移

根据文本块移动

所谓的文本块也就是句子、段落、小节等

(            移动到当前句子开头
)            移动到下一个句子开头
{            移动到当前这一段开头   
}            移动到下一段开头
[[           移动到当前这一节的开头
]]           移动到下一节的开头
其中,VIM以? . !等符号来标记一个句子

空白行来标记一个段落
用节宏来标记一个节(节宏是什么我还没搞清楚)

根据行号来移动

Ctrl+g            显示当前行信息
nG                转至第n行
G                 转至文本末尾
gg           移至文本开头
如果你不知道当前是多少行的话就可以用Ctrl+g来查看

如果想转到第800行,可以用800G

其实z命令也可以做到,并且把光标移动到第一行

tips:``反引号可以返回到使用G之前的位置

fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。

tx:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用)

Fx:和 fx 类似,不过是往回找。使用 , 来重复上一个F命令。

Tx:和 tx 类似,不过是往回移动到 x 的右边一个位置。

b:光标往前移动一个词。

w:光标往后移动一个词。

0:移动光标到当前行首。(是数字0)

^:移动光标到当前行的第一个字母位置。

*:读取光标处的字符串,并且移动光标到它再次出现的地方。

#:和上面的类似,但是是往反方向寻找。

/text:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n移动到下个 text 处,N 移动到上一个 text 处 。

?text:和上面类似,但是是反方向。

m{a-z}:在当前光标的位置标记一个书签,名字为 a-z 的单个字母。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。

`a:到书签 a 处。注意这个不是单引号,它一般位于大部分键盘的 1 的左边。

`.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。

%:在成对的括号等符号间移动,比如成对的 [ ] , { }, ( ) 之间。将光标放到任意符号上,然后通过 % 来移动到和这个符号匹配的符号上,% 还可以正确的识别括号的嵌套层数,总是移动到真正匹配的位置上。因此这个命令在编辑程序代码的时候非常有用,可以让你方便的在一段代码的头尾间移动。

上一节我们讲到了VIM中的移动,既然已经能够在屏幕和光标间游刃有余了

那么,现在就来谈谈插入命令

不知道有多少VIM新手和我当年(去年)一样,信誓旦旦的以为只有i可以插入

唉,现在想想都觉得可笑,都是Windows下的编辑器用多了的结果

鼠标一点,妈妈再也不用担心我的文本插入了……悲剧!

好了,让我们抛弃过去吧,从现在起奋斗,也许不算太晚

这是俺写的《轻快的VIM系列》第二节,每一节都会不断更新,加入更多技巧在里面

VIM新手们加油,咱一起总结,一起努力练习……
基础
字符位置插入
i            在光标之前插入
a            在光标之后追加
你看,其实刚开始用这两个就足够了,这就是最基础的

为什么这么说呢?因为你可以依靠上一节中的移动命令来达到任意位置,然后再大力插入

不要忘了,VIM中最重要的技巧之一就是命令间的配合使用

进阶
行位置插入

A            在一行的结尾处追加
I            在一行的开头处插入
o            在光标所在位置的下一行打开新行插入
O            在光标所在位置的上一行打开新行插入
当然,如果你认为先移动光标然后插入或追加慢了,那么就应该用上面这种方法

它们是以行做单位

在这里我还是需要提醒一下,命令前加数字代表执行次数

tips1:10I*<Esc>先输入10,然后输入i,接着输入*号,最后按<Esc>

     这样就可以在一行开头输入十个*

tips2:同样,5o###<Esc>先输入5,然后输入o,接着输入###,最后按<Esc>

     这样就可以在下列5行中每一行开头插入###

看,这样一来,再需要输入重复文本的时候就变得方便了对不对,你可以自己试着扩展思维……


但我依然会不厌其烦的提醒你,命令的组合也是最重要的技巧之一

合并行

有时候你也许会想合并两行

J            合并两

你只需要把光标移动到首行,然后按3次J即可


让我感觉奇怪的是,我直接使用3J却只能合并两行,4J才能合并3行

谁来告诉我为什么
这一节我们来看看删除,删除命令比较简单,不过要使删除更有效率

你需要配合我们第一节中讲的各种移动命令

字符删除
x            删除光标所在处字符
X            删除光标所在前字符
这里没有什么可注意的地方,但需要说明一下的是

通常情况下,新手一旦着急便会按着x不动,从而达到删除一大块文本的目的

如果是头几天使用还好说,但从长久考虑,你还需要学习下面的删除命令

单词删除
dw            删除到下一个单词开头
de            删除到本单词末尾
dE            删除到本单词末尾包括标点在内
db            删除到前一个单词
dB            删除到前一个单词包括标点在内
很明显,d是delete的缩写,而上面的x则是老式的清除意思

这里e表示往前删除一个单词,b表示往后删除一个单词,第一节中移动写的很清楚

要注意的是e b会忽略标点,如don't,它们会把这当做三个单词don、‘ 和 t 来删除

而大写的E B则不会

行删除
dd            删除一整行
D d$          删除光标位置到本行结尾
d0            删除光标位置到本行开头
这三种用法是最好理解的

我一开始便说过,删除命令需要配合移动命令才能发挥更多作用

你可以看看第一节内容,然后自己尝试着删除一节或一段内容等

tips:3dd代表删除三行,聪明的你一定早就知道了
http://www.cnblogs.com/nerxious/archive/2012/12/21/2828520.html
我想每个Coder都深刻的明白,修改这一操作在代码的世界里是多么重要

与其说修改,无非就是删除了再插入,但VIM把这两者结合的很有效率

闲话少说,让我们再次使用这轻快的VIM在code上起

字符替换
r            单个字符替换
R            连续替换
~           更改大小写
很简单,多试试就行了


tips:4~更改连续4个字符的大小写,很有意思

单词修改
cw            从光标处修改到单词结尾
cb            从光标处修改到单词开头
这里直接使用cw或cb操作很简单,要注意的是加数字的使用方式

此时2cw 或者 c2w都可以使用,功能一样

行修改
c$            从光标修改到本行末尾
C             功能同上
c0            从光标修改到本行开头
cc            删除整行从头修改
S             功能同上
s             删除光标所在位置的字符,然后插入
这里有点难记,主要是多练习才能看到效果

其中,c$和C功能是一样的,都是从光标修改到行尾,d$+a达到相同效果

c0和d0+i效果一样,区别是少输入一次

cc和S效果也是一样,其实S是属于插入的范畴,这里类似,所以一起讲了

再来是s,它会删除光标处的字符再插入,效果等同于x+i或c+space

多行修改我想就不用说了,前面加上数字再组合命令就可以了


从上面看来,我们应该可以更深刻的认识到,VIM中大部分命令是组合使用的


利用好了这点才能更快的摸索出自己的使用习惯,从而高效修改


操作相同文本的时候复制尤其有效,在Windows中我们都习惯了先用鼠标选择文本


而Vim下则不用那么麻烦,你甚至可以使用可视模式操作,但这里先略过


我在这一节主要说说命令模式下的复制

在讲复制之前我要先说一个简单到不行的命令

粘帖
p            粘帖                  
复制的形式可以很多,但是粘帖的形式却没多少

无非就是加数字达到多次粘帖什么的

其实准确的说,p应该是放置的意思

不过我也搞不清是paste还是put的缩写

单词和字符复制
ynl            向右复制n个字符
ynh            向左复制n个字符
ynw            向前复制n个单词
ynb            向后复制n个单词
由于复制操作通常是在量比较大的情况下进行


所以这里我使用了n代替需要操作的个数


需要说明的是,这里看起来并没有多大意义


因为复杂字符和单词还没有直接插入的方式来的快

行复制
y0            复制到行首
y$            复制到行末
yy            复制整行
yH            从当前行复制到屏幕顶端
yL            从当前行复制到屏幕低端
这里前两条用的也比较少

但是整行或多行复制才是yy的方便之处

tips:1. 4yy也就是复制4行

         2.y几乎可以跟任何光标移动命令结合,不信你试试

剪切
说完了复制这里顺便把剪切的命令也说下

其实剪切很简单,就是先删除,然后按p粘帖

比如dd删除一行后,这一行会被放入缓冲区

接着移动到你想放置的位置,按p,就被粘帖好了
恢复在VIM里比较简单,不过想要具体恢复到某个时间段很难

就我的经验而言,有时候使用恢复还不如删了重写

这里我们来讲讲恢复、撤销和重复命令的使用

u            撤消上次命令
U            恢复整行
ctrl+r       重做
.            重复
e!          全文恢复
如果有使用office的经验,那么这里的撤销和重做应该很好理解

比如我用dw删除一个单词,按下u就会回到没删除之前

一旦我后悔了,ctrl+r便会重新删除一次
 
其中U也十分好用,它能恢复本行内容,无论你在本行做过什么

需要注意的是,你不能在别处操作多次后再回到那一行来恢复

接着.号能够重复你上次命令

比如dd删除一行,你接着按一次.就相当于重新使用一次dd命令

如果你按5.那就是重复dd5次了

最后e!就牛逼了,当你把代码写的无比凌乱之时

它能恢复到最初形态,只要你还没使用过w、wp或x保存

Vim 添加注释 详解
一、手注释动 vim下
1.插入注释:按Ctrl+v进入virtual模式
用上下键选中需要注释的行数
按大些“I”进入插入模式,输入注释符“#”,
然后立刻按下ESC(两下)
2.删除注释先按v进入列模式横向选中列的个数(如"/ /"注释符号,需要选中两列),
再按Esc 再按ctrl+v 进入列编辑模式,向下或向上移动光标按x、d键删除 

vim 从 vim7 开始加入了多标签切换的功能, 相当于多窗口.
之前的版本虽然也有多文件编辑功能, 但是总之不如这个方便啦。
用法
:tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab
:tabc       关闭当前的tab
:tabo       关闭所有其他的tab
:tabs       查看所有打开的tab
:tabp      前一个
:tabn      后一个
标准模式下:
gt , gT 可以直接在tab之间切换。
还有很多他命令, 看官大人自己, :help table 吧。

看过Swaroop的书之后,就越来越喜欢VIm了。

尤其是多窗口,真是非常Cool哦~
解释一下这是咋弄出来的:
在Vim中开多窗口其实比较简单,也有不只一种方法,直接使用命令:new默认就是打开一个水平分割的新窗口。另外一个命令就是:split(sp)。
但是默认水平分割多少有点不爽,因为本来屏幕就是宽屏的,代码几乎不会写那么长了,而真正缺少的垂直空间,所以这个时候就要用到垂直分割了,命令是:vsplit(vs),很简单了一目了然。
打开了这么多窗口不知道如何切换肯定不行啦。切换也很简单,组合键ctrl+w,然后通过j/k,来定位窗口,注意看好窗口光标变化。不过个人感觉这样比较麻烦,每切换一次窗口都要先按组合键才行。还好还有另一种方法,那就是直接连续按两次ctrl+w组合键,vim会自动跳到下一个窗口。
另外更改窗口宽度的命令是: Crtl+w > 将当前窗口向右边扩展一行,将 > 换成 < 就是向左边扩展一行。也可以在之前使用数字代表扩展的行数, 5 Ctrl+w > ,向右边扩展5行。
更改窗口高度类似,只是命令是Ctrl+w + ,增加高度,- 减小高度。
1、打开多个窗口
打开多个窗口的命令以下几个:
横向切割窗口
:new+窗口名(保存后就是文件名) 
:split+窗口名,也可以简写为:sp+窗口名
纵向切割窗口名
:vsplit+窗口名,也可以简写为:vsp+窗口名
2、关闭多窗口
可以用:q!,也可以使用:close,最后一个窗口不能使用close关闭。使用close只是暂时关闭窗口,其内容还在缓存中,只有使用q!、w!或x才能真能退出。
:tabc 关闭当前窗口
:tabo 关闭所有窗口
3、窗口切换
:ctrl+w+j/k,通过j/k可以上下切换,或者:ctrl+w加上下左右键,还可以通过快速双击ctrl+w依次切换窗口。
4、窗口大小调整
纵向调整
:ctrl+w + 纵向扩大(行数增加)
:ctrl+w - 纵向缩小 (行数减少)
:res(ize) num  例如::res 5,显示行数调整为5行
:res(ize)+num 把当前窗口高度增加num行
:res(ize)-num 把当前窗口高度减少num行
横向调整
:vertical res(ize) num 指定当前窗口为num列
:vertical res(ize)+num 把当前窗口增加num列
:vertical res(ize)-num 把当前窗口减少num列
5、给窗口重命名
:f file
6、vi打开多文件
vi a b c
:n 跳至下一个文件,也可以直接指定要跳的文件,如:n c,可以直接跳到c文件
:e# 回到刚才编辑的文件
7、文件浏览
:Ex 开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择
:Sex 水平分割当前窗口,并在一个窗口中开启目录浏览器
:ls 显示当前buffer情况
8、vi与shell切换
:shell 可以在不关闭vi的情况下切换到shell命令行
:exit 从shell回到vi

from:http://hi.baidu.com/dtzw/blog/item/64a6f3f2fc10721eb07ec590.html

vim是个优秀的编辑器,有很多功能你不知道。
比方说vim可以模拟多窗口(多tab)以及拆分窗口,可以同时编辑多个文件。
多tab时,每个tab可以编辑一个文件,但不同的tab不能同时显示,要切换。
拆分窗口后,窗口是同时显示的,每个窗口可以编辑一个文件。
两种方式可以同时生效的,现在试一下:
命令模式:输入sp,窗口就上下拆分成两个窗口了。
按ctrl+w然后再按c,就关掉当前窗口了。
连按两次ctrl+w,可以在窗口间切换。
输入vs,就是垂直拆分。
也可以多tab,输入命令tabnew,就创建一个新tab,命令tabn就切换到下一个tab,tabn3就切换到第三个tab,tabc就关掉当前tab。
具体看vim的手册,或者vim里help 某个命令。

vim 从 vim7 开始加入了多标签切换的功能, 相当于多窗口.
之前的版本虽然也有多文件编辑功能, 但是总之不如这个方便啦。
用法
:tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab
:tabc       关闭当前的tab
:tabo       关闭所有其他的tab
:tabs       查看所有打开的tab
:tabp      前一个
:tabn      后一个
标准模式下:
gt , gT 可以直接在tab之间切换。
还有很多他命令, 看官大人自己, :help table 吧。

看过Swaroop的书之后,就越来越喜欢VIm了。

尤其是多窗口,真是非常Cool哦~

解释一下这是咋弄出来的:

在Vim中开多窗口其实比较简单,也有不只一种方法,直接使用命令:new默认就是打开一个水平分割的新窗口。另外一个命令就是:split(sp)。

但是默认水平分割多少有点不爽,因为本来屏幕就是宽屏的,代码几乎不会写那么长了,而真正缺少的垂直空间,所以这个时候就要用到垂直分割了,命令是:vsplit(vs),很简单了一目了然。

打开了这么多窗口不知道如何切换肯定不行啦。切换也很简单,组合键ctrl+w,然后通过j/k,来定位窗口,注意看好窗口光标变化。不过个人感觉这样比较麻烦,每切换一次窗口都要先按组合键才行。还好还有另一种方法,那就是直接连续按两次ctrl+w组合键,vim会自动跳到下一个窗口。

另外更改窗口宽度的命令是: Crtl+w > 将当前窗口向右边扩展一行,将 > 换成 < 就是向左边扩展一行。也可以在之前使用数字代表扩展的行数, 5 Ctrl+w > ,向右边扩展5行。

更改窗口高度类似,只是命令是Ctrl+w + ,增加高度,- 减小高度。

VIM 标签页 (tab)

新建标签页

使用:tabe命令和文件名参数,可以在新标签页中打开指定的文件。也可以使用:tabnew命令,在新标签页中编辑新的文件。命令:tab split将在新标签页中,打开当前缓冲区中的文件。

命令:tabf允许你在当前目录搜索文件,并在新标签页中打开。比如我想打开当前目录下的img.txt文件,那么就可以使用:tabf img.*命令。请注意,此命令只能打开一个文件,如果搜索出多个匹配文件,将提示你“文件名过多”,这时你需要给出更精确的搜索条件以打开文件。

Vim默认最多只能打开10个标签页。你可以用set tabpagemax=15改变这个限制。

列示标签页

命令:tabs可以显示已打开标签页的列表,并用“>”标识出当前页面,用“+”标识出已更改的页面。

关闭标签页

命令:tabc可以关闭当前标签页。而命令:tabo将关闭所有的标签页。

切换标签页

命令:tabn或gt可以移动到下一个标签页。而命令:tabp或gT将移动到上一个标签页。如果已经到达最后面或最前面的标签页,将会自动转向循环。

如果你打开了很多标签页,那么可以使用:tabfirst或:tabr命令,移动到第一个标签页。使用:tablast命令,移动到最后一个标签页。

移动标签页

如果你希望按照指定的次序排列标签页,那么你可以使用:tabm命令。请注意,标签页次序是从0开始计数的。比如命令:tabm 1将把当前标签页移动到第2的位置。如果你没有为:tabm命令指定参数,那么当前标签页将会被移动到最后。

配置标签页

默认情况下,只有用户新建了标签页才会在窗口上方显示标签栏,这是由选项set showtabline=1决定的。如果我们希望总是显示标签栏,那么可以用set showtabline=2命令来设置。如果我们希望完全不显示标签栏,那么可以使用set showtabline=0来设置。

多标签页命令
使用:tabdo命令,我们可以同时在多个标签页中执行命令。比如我们打开了多个标签页,需要把这些文件中的“food”都替换成“drink”,那么就可以使用:tabdo %s/food/drink/g命令,一次完成对所有文件的替换操作,而不用针对每个文件重复操作。

图形界面

如果你使用的是带有图形界面的gVim,那么新建、关闭和打开标签页的操作,都可以通过在标签页上右击鼠标完成。只需要点击相应标签,就可以在不同的标签页间切换。
通过:help tab-page-intro命令,可以获得关于标签页使用的更多信息。

命令小结
:tabnew    新建标签页
:tabs    显示已打开标签页的列表
:tabc    关闭当前标签页
:tabn    移动到下一个标签页
:tabp    移动到上一个标签页
:tabfirst    移动到第一个标签页
:tablast    移动到最后一个标签页
 http://www.webinno.cn/blog/article/view/44
在 vi 中, 移动光标和编辑是两件事, 正因为区分开来, 所以可以很方便的进行光标定
位和编辑. 因此能更快一点移动光标是很有用的.文中的c-表示ctrl,大小写敏感。光标定位
还需结合搜索。
=== 光标定位 ==
    
    h或^h         向左移一个字符
    j或^j或^n     向下移一行
    k或^p         向上移一行
    l或空格         向右移一个字符
    w             移到下一个字的开头
    W             移到下一个字的开头,忽略标点符号。默认的情况下W认为字符串时已空格分开的。
                    cp /mnt/marvell/main.sh /stv/ 
                    所以上面一行在W的选择下只有三个字符串,即 1 cp 2 /mnt/marvell/main.sh  3 /stv/ 
                    这与w时不一样的。
    e             移到下一个字的结尾
    E             移到下一个字的结尾,忽略标点符号
    b             移到前一个字的开头
    B             移到前一个字的开头,忽略标点符号同W
    |             移到当前行的第一列
    0             移到当前行的第一列字符处,会忽略行前的空白。
    n|             移到当前行的第n列
    ^             移到当前行的第一个非空字符
    $             移到当前行的最后一个字符
    return或+     移到下一行的第一个字符
    -             移到前一行的第一个非空字符
    L             移到屏幕的最后一行

    M             移到屏幕的中间一行

    H             移到屏幕的第一行
    
    G             移到文件的最后一行

    nG             移到文件的第n行

    (             移到句子的开头

    )             移到句子的结尾

    {             移到段落的开头 //我用的时候发现{只是移动到前一个空行 }移动到后一个空行首

    }             移到下一个段落的开头

      /**vim 第一列插入{来定义一个段落 */

    [[             回到段落的开头处

    ]]             向前移到下一个段落的开头处
    
    m(a-z)         用一个字母来标记当前位置,如用mz表示标记z

    '(a-z)         将光标移动到指定的标记,如用'z表示移动到z
  
    ''          此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查(此处时两个单引号不是双引号)
                找到某个单词后, 再输入此命令则回到上次停留的位置.
    '.          此命令相当好使, 它移动光标到上一次的修改行.

    `.          此命令相当强大, 它移动光标到上一次的修改点.

    %            从大括号的开始移动到大括号的结束位置
    
    :            后边加行号就是跳到这一行
    
    <C-O>       光标返回到以前的位置。相当于光标移动的“撤销”

    <C-I>       光标返回到后来的位置。相当于光标移动的“恢复”
    
=== 屏幕定位 ==
    c-e         将屏幕上滚一行
    c-y         将屏幕下滚一行

    c-u         将屏幕上滚半页
    c-d         将屏幕下滚半页

    c-b         将屏幕上滚一页
    c-f         将屏幕下滚一页

    z-return     将当前行置为屏幕的顶行
    nz-return     将当前行下的第n行置为屏幕的顶行

    z.             将当前行置为屏幕的中央
    nz.         将当前行上的第n行置为屏幕的中央
    z-             将当前行置为屏幕的底行
    nz-         将当前行上的第n行置为屏幕的底行
 
本文链接:http://www.webinno.cn/blog/article/view/43
最近读了一下Swaroop C H的<A Byte of Vim>,其中涉及到一些Vim命令,总结如下:

命令        说明

7j        将光标下移7行
dw        删除一个单词
*        搜索文件中当前光标所在处的单词
:50,100s/old/new/g 将第50-100行之间的"old"替换为"new"
:sp        “分割”视角,同时浏览一个文件的两个不同部分
gf        打开以当前光标处的单词为文件名的文件
:colorscheme desert 更换色彩方案,将色彩方案换为desert
i        将Vim切换到插入模式
<Esc> 将Vim切换到正常模式
:%s/from/to/g 将全文中的"from"全部替换为"to"
:s        表示替换,substitute
:0,10s/from/to/gc 将文本前10行中的"from"替换为"to",并在每次替换之前都要
                                                用"yes"和"no"确认,c表示confirmation
<Enter> 所有命令模式下的命令都必须以<Enter>结尾,
                                                来通知Vim命令已经结束
:help vim-modes-intro 查看Vim帮助文档中关于模式的介绍
:edit hello.txt/:e hello.txt 编辑hello.txt文件,如果该文件不存在,则新建一个hello.txt文件,
                                                并进入编辑状态
:write/:w        保存刚刚编辑的文件
:quit/:q        关闭当前窗口
:q!        强制关闭当前窗口
:help        查看帮助信息
:help :edit        查看关于 :edit 的帮助信息
:help notation
:help keycodes
:echo "Hello, World!" 回显"Hello, World!"
/hello        搜索"hello",并显示第1个匹配
:help usr_toc 显示参考手册的目录
:help index        显示索引,可以通过在其中搜索感兴趣的话题
/insert mode 显示与插入模式相关的信息
F1        显示帮助

由正常模式进入插入模式的几种方式:
i        将光标移到当前位置前的一个位置,并进入插入模式
I        将光标移动到所在行的行首位置,并进入插入模式
a        将光标移动打当前位置后的一个位置,并进入插入模式
A        将光标移动到所在行的行尾位置,并进入插入模式
o        在所在行之下开辟一个新行,并进入插入模式,光标在新行的行首
O        在所在行之上开辟一个新行,并进入插入模式,光标在新行的行尾
:help inserting 显示关于插入的帮助文档

用于替换的几个命令:
s        删除光标所在处的字符,并进入插入模式,主要用于替换,
                                                其效果和“删除+插入”相同
S        删除光标所在行的所有内容,并进入插入模式,用于整行内容的替换
r        "replace",即替换,删除光标所在处的字符,
                                                 在输入要替换的字符后,自动回到正常模式下
R        多个字符的替换,光标处及之后的单词可以被替换
:help replacing                显示关于替换的帮助文档

b        在光标移动到所在处单词的第一个字母处,如果所在处为空白,
                                                则移动到所在处前一个单词的第一个字母

v        由正常模式进入可视模式,以字符为最小选中单位,对内容进行选择
V        由正常模式进入可视模式,以行为最小选中单位,对内容进行选择
c        删除选中的内容,并由可视模式进入插入模式,对选中内容进行修改

5e        移动当前光标,到其后第5的单词的结尾处
w        将光标移动到当前位置之后的单词的开头
3fh        寻找当前行光标之后第 3 次出现 "h" 的位置,将光标置于该处
}        将光标移动到下一段的开头
35j        将光标向下移动35行
ctrl+o        返回移动前光标所在位置
2j        将 j 的 操作重复两次,即向下移动2行
5l        将光标向右移动5次,和操作 l 5次 效果相同
5h        将光标向左移动5次,和操作 h 5次 效果相同

^        将光标移动到行首
$        将光标移动到行尾
Ctrl+b        向上移动一个屏幕
Ctrl+f        向下移动一个屏幕
50G        将光标移动到第50行的开头
G        将光标移动到文件的最后一行的行首
1G        将光标移动的文件的第一行的行首
M        将光标移动到第一行的行首
L        将光标移动到最后一行的行首
M        将光标移动到中间一行的行首

以单词为单位进行光标移动:
w        将光标移动到下一个单词的开头
2w        将光标向后移动 2 个单词,即移动到其后第 2 个单词的开头
e        若光标位于当前单词的最后一个字符上,
                                                则将光标移动到下一个单词的结尾字符上;
                                                若光标不位于当前单词的最后一个字符,
                                                则将光标移动到当前单词的最后一个字符上。
2e        若光标位于当前单词的最后一个字符上,
                                                则将光标移动到其后第 2 个单词的结尾字符上;
                                                若光标不位于当前单词的最后一个字符,
                                                则将光标移动到气候第 1 个单词的结尾字符上。
b        若光标位于当前单词的第 1 个字符上,
                                                则将光标移动到当前单词前一个的单词的第 1 个字符上;
                                                若光标不位于当前单词的第 1 个字符上,
                                                则将光标移动到当前单词的第 1 个字符上。
2b        若光标位于当前单词的第 1 个字符上,
                                                则将光标移动到当前单词前一个的单词的第 2 个字符上;
                                                若光标不位于当前单词的第 1 个字符上,
                                                则将光标移动到当前单词的第 2 个字符上。
:help word-motions        查看关于以单词为单位进行光标移动的帮助文档


以句子为单位进行光标的移动:
)        将光标由当前位置移动到下一句话句首字符的位置
(        若光标位于所在句子的句首字符位置,
                                                则将光标移动到前一句的句首位置;
                                                若光标不位于所在句子的句首字符位置,
                                                将光标移动到所在句子的第 1 个字符的位置。
2(        将光标由当前位置移动到其后第 2 句话句首字符的位置
2)        若光标位于所在句子的句首字符位置,
                                                则将光标移动到其前面 2 句话的句首位置;
                                                若光标不位于所在句子的句首字符位置,
                                                则将光标移动到其前面 1 句话的句首位置;
}        将光标移动到下一段段首的位置
{        将光标移动到上一段段首的位置
:help cursor-motions        查看与光标移动有关的帮助信息


ma        在光标所在位置创建一个名为 a 的标记,记录光标位置
'a        回到光标 a 所在的位置
Ctrl+o        回到原来的位置
Ctrl+i        到下一个位置

ap        在可视模式下,选择光标所在处的一个段落
aw        在可视模式下,选择光标所在处的的一个单词
ab        在可视模式下,选择光标所在处由圆括号()包围的一个区域内
                                                的所有内容
:help object-motions        查看与对象移动有关的帮助信息
:help text-objects        查看与文本对象有关的帮助信息
:help motions/various-motions 查看与移动有关的帮助信息

:help user-manual        查看用户手册
:help abbreviation        查看与缩写相关的帮助信息
Ctrl+]        在查看帮助信息时,将光标放在[<>]之间,
                                                可以跳转到相关的帮助信息
:helpgrep phrase        寻找所有帮助文档,显示包含指定内容"phrase"的帮助信息
:cnext        跳转到文档中下一个包含所搜索信息"phrase"的部分
:cprev        跳转到文档中上一个包含所搜索信息"phrase"的部分
:clist        显示文档中包含"phrase"部分的列表

:swapname        显示交换文件的名字
~        改变光标所在处字符的大小写格式
:pwd        显示Vim寻找文件的默认路径
|        将光标移动到改行的第一个字符处
dl        将光标所在处的字符删除
dw        将光标所在处的单词删除
dd        删除光标所在行的全部内容
yy        赋值光标所在行的全部内容到剪贴板
yap        复制光标所在段落的全部内容到剪贴板
p        在当前光标所在处之后的位置粘贴剪贴板的内容
P        在当前光标所在处之前的位置粘贴剪贴板的内容
dwwP        将光标所在位置前(不含光标)的单词和光标所在位置后
                                               (包含光标)单词转换
:help mark-motions        查看关于制作标签以记录位置的帮助文档

u        Undo,回到上次的内容
Ctrl+r        Redo
:earlier 4m        显示 4 分钟前的文本状态
:later 45s        显示 45 秒之后的文本状态
:undo 5        Undo 5 次
:undolist        查看 undo 的列表
:help undolist        查看关于 undo 列表的说明信息
:help undo-redo/usr_32.txt        查看关于 undo 和 redo 的帮助文档

/something        在文档中搜索匹配"something"的部分
n        在搜索结果中跳至下一个匹配的搜索结果
N        在搜索结果中回到上一个匹配的搜索结果
/\<something\>        搜索只匹配"something"的部分,其中"something"独立,不能为某个
                                                单词的一部分
/\d        搜索文档中的数字,以一个数字为单位来匹配结果
/\d\+        搜索文档中的数字,以一个数字或者多个数字为单位来匹配结果


:set foldmethod=indent        将前后缩进的文本尽心折叠处理,相同缩进被折叠在一起
zc        将光标所在行及其之后相同缩进的文本折叠起来,不予显示
zo        将光标所在行及其之后相同缩进的文本展开,显示其完整信息
za        具有zc和zo相同的功能,折叠时用于打开文本,打开时用于折叠文本
:help folding        显示与折叠相关的帮助信息

:b 1        转到缓冲区 1 中的文件
:bd 1        删除缓冲区 1 中的文件
:buffers/:ls        显示所有缓冲区中的文件列表
:help buffer-list        显示与缓冲区有关的帮助信息

:new        将当前屏幕(视角)分割,并创建一个新的未命名的缓冲区
:w test.txt        将当前缓冲区保存为 test.txt,如果该缓冲区为已经存在的文件,
                                                则用给定文件名创建一个副本
Ctrl+w <方向键h,j,k,l>        在不同屏幕,即不同缓冲区之间切换
Ctrl+w Ctrl+w        在不同缓冲区之间进行切换
:sp/Ctrl+w s        将当前屏幕(视角)水平分割
:vsp/Ctrl+w v        将当前屏幕(视角)垂直分割
Ctrl+w r        旋转视角,即将两个视角位置互换
Ctrl+w K        将当前视角(缓冲区)放到最高的位置,其他视角向下移动
:resize 10        以行为单位重新调整当前视角的长度,如 :resize 10 表示将当前视角
                                                调整为10行
Ctrl+w _        将当前视角调整为最大,其他视角压缩大小
Ctrl+w =        将所有视角的高度调整为相等
:help windows        查看与视角相关的帮助文档

:tabnew        创建一个新的缓冲区,并在一个新的标签页上打开
:tabc/:q        关闭当前标签页
:tabmov        调整各个标签页的顺序
:tabmov 0        将当前标签页调整到第 1 的位置
:tab help something        在新的标签页上显示某个条目的帮助文档
Ctrl+Tab        在屏幕上不同分屏处进行切换
生活的脚步,技术的点滴...
quickfix提高vim编程编译调试效率

以前使用vim编程时,在终端下面至少2个tab,一个编辑一个编译,编译出错时,切换到编辑tab页进行差错纠正。今天又学习了vim的quickfix模式,quickfix是vim自带的,无需插件。

vim由一个程序员开发,而且为更多的程序员所使用,所以在vim中加强了对软件开发的支持,quickfix模式的引入就是一个例子。所谓quickfix模式,它和Normal模式、Insert模式没什么关系,它只是一种加快你开发速度的工作方式。
Quickfix模式的主要思想是保存一个位置列表,然后提供一系列命令,实现在这个位置列表中跳转。
位置列表的产生可以从编译器的编译输出信息中获得,也可以由grep命令的输出信息中获得。
[编译]
通常,我们在开发过程中,经常要写代码,编译,修改编译错误,这个过程会数十遍上百遍的重复。如果你是根据编译器输出的错误信息,打开出错的文件,找到出错的行,然后再开始修改,那效率未免太低下了。
利用vim的quickfix模式,可以大大加快这一过程,你可以在vim启动编译,然后vim会根据编译器输出的错误信息,自动跳到第一个出错的地方,让你进行修改;修改完后,使用一个快捷键,跳到下一个错误处,再进行修改,方便的很。
为了做到这一点,你首先要定义编译时所使用的程序,对大多数使用Makefile的项目来说,vim的缺省设置"make"已经可以满足要求了。如果你的项目需要用一个特殊的程序进行编译,就需要修改'makeprg'选项的值。
大家在学编程时大概都读过"hello world"程序,我们就以这个简单的例子为例,讲一下quickfix模式的用法。

该程序的内容如下,里面包含了三个小小的错误:
/* hello world demo */
#include <stdio.h"
int main(int argc, char **argv)
{
int i;
print("hello world\n");
return 0;
}
输入编译命令了:
:make
在使用":make"时,vim会自动编译,并把编译输出重定向到一个临时文件中,当编译出现错误时,vim会从上述临时文件中读出错误信息,根据这些信息形成quickfix列表,并跳转到第一个错误出现的地方。
对于我们上面的程序来说,光标会停在第三行,也就是第一个出错的位置,vim同时会提示出错信息。如果你没看清出错信息,可以输入":cc"命令,vim会更次显示此信息,或者干脆使用":cw"命令,打开一个quickfix窗口,把所有的出错信息显示出来,见下图:


现在我们知道错在哪儿了,修正一下,然后使用":cn"命令(或者在Quickfix List对应行上输入回车)跳到下一个出错的地方,以此类推,直到修正全部错误。
好了,千辛万苦,我们的hello world终于工作了。乍一看这个例子,似乎Quickfix并没有提高什么效率,但如果你的错误出现在多个不同目录的不同文件里,它可以帮你省很多时间,使你可以集中精力在修正bug上。
vim可以同时记住最新的10个错误列表,也就是说你最近10次使用":make"命令编译所遇到的错误都保存着,可以使用":colder"和":cnewer"命令,回到旧的错误列表,或者到更新的错误列表。

在quickfix模式里经常用到的命令有:
:cc 显示详细错误信息 ( :help :cc )
:cp 跳到上一个错误 ( :help :cp )
:cn 跳到下一个错误 ( :help :cn )
:cl 列出所有错误 ( :help :cl )
:cw 如果有错误列表,则打开quickfix窗口 ( :help :cw )
:col 到前一个旧的错误列表 ( :help :col )
:cnew 到后一个较新的错误列表 ( :help :cnew )

更多的命令,以及这些命令更详细的解释,请参见手册。
对于经常用到的命令,最好提供更方便的使用方法,在我的vimrc中的定义:
autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
nmap <leader>cn :cn<cr>
nmap <leader>cp :cp<cr>
nmap <leader>cw :cw 10<cr>

现在使用",<space>"(先按,再按空格)就可以编译,使用",cp"和",cn"跳到上一个和下一个错误,使用",cw"来打开一个quickfix窗口。这下顺手多了!
如果你希望跳转到出错的文件时,使用一个分隔的窗口打开,请参阅'switchbuf'选项的值。
在vim7中,每个窗口都可以拥有自己的位置列表,这样,你就能够同时打开多个位置列表了,而quickfix列表在整个vim中只有一个。你可以使用位置列表来显示编译错误信息,具体命令参阅手册:":help location-list"以及":help :lmake"。

结合文章http://dongpingli.blogspot.com/2009/03/makefile_27.html编写的通用makefile,这下在写新程序时,直接copy makefile到程序目录,在vim里面写完程序后直接make,然后查错修改在一个tab下,省得来回tab切换,效率会提高不少。
http://www.cnblogs.com/lidp/articles/1696053.html

vim的taglist的确很好用.

http://hi.baidu.com/tjuer/item/638a9bb045a32197194697b0
http://www.cnblogs.com/mo-beifeng/archive/2011/11/22/2259356.html
今天发现在vim中浏览代码不太方便, 每次总是需要搜索函数名。只好去试试传说中的taglist插件了! 用完后发现,taglist的确不错,很方便. 下面是安装的步骤和简单的使用入门介绍.


1> taglist的安装.
推荐文章: (按照上面的步骤一步一步走就行了)
http://vim-taglist.sourceforge.net/installation.html 
http://www.vim.org/scripts/script.php?script_id=273    (含官方下载地址)


2> 简单配置和上手入门
为了使用方便,建议修改一些设置选项.  (在.vimrc中设置)
常见的设置有:
★ let Tlist_Show_One_File = 1            "不同时显示多个文件的tag,只显示当前文件的
★ let Tlist_Exit_OnlyWindow = 1          "如果taglist窗口是最后一个窗口,则退出vim
★ let Tlist_Use_Right_Window = 1         "在右侧窗口中显示taglist窗口


下面介绍常用的taglist配置选项,你可以根据自己的习惯进行配置:

- Tlist_Ctags_Cmd选项用于指定你的Exuberant ctags程序的位置,如果它没在你PATH变量所定义的路径中,需要使用此选项设置一下;

- 如果你不想同时显示多个文件中的tag,设置Tlist_Show_One_File为1。缺省为显示多个文件中的tag;

- 设置Tlist_Sort_Type为”name”可以使taglist以tag名字进行排序,缺省是按tag在文件中出现的顺序进行排序。按tag出现的范围(即所属的namespace或class)排序,已经加入taglist的TODO List,但尚未支持;

- 如果你在想taglist窗口是最后一个窗口时退出VIM,设置Tlist_Exit_OnlyWindow为1;(very useful ~~~)

- 如果你想taglist窗口出现在右侧,设置Tlist_Use_Right_Window为1。缺省显示在左侧。

- 在gvim中,如果你想显示taglist菜单,设置Tlist_Show_Menu为1。你可以使用Tlist_Max_Submenu_Items和Tlist_Max_Tag_Length来控制菜单条目数和所显示tag名字的长度;

- 缺省情况下,在双击一个tag时,才会跳到该tag定义的位置,如果你想单击tag就跳转,设置Tlist_Use_SingleClick为1;

- 如果你想在启动VIM后,自动打开taglist窗口,设置Tlist_Auto_Open为1;

- 如果你希望在选择了tag后自动关闭taglist窗口,设置Tlist_Close_On_Select为1;(这个应该比较方便,好用)

- 当同时显示多个文件中的tag时,设置Tlist_File_Fold_Auto_Close为1,可使taglist只显示当前文件tag,其它文件的tag都被折叠起来。(这个也不错! )

- 在使用:TlistToggle打开taglist窗口时,如果希望输入焦点在taglist窗口中,设置Tlist_GainFocus_On_ToggleOpen为1;(useful~~)

- 如果希望taglist始终解析文件中的tag,不管taglist窗口有没有打开,设置Tlist_Process_File_Always为1;

- Tlist_WinHeight和Tlist_WinWidth可以设置taglist窗口的高度和宽度。Tlist_Use_Horiz_Window为1设置taglist窗口横向显示;

在taglist窗口中,可以使用下面的快捷键:

<CR>          跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o             在一个新打开的窗口中显示光标下tag
<Space>       显示光标下tag的原型定义
u             更新taglist窗口中的tag
s             更改排序方式,在按名字排序和按出现顺序排序间切换
x             taglist窗口放大和缩小,方便查看较长的tag
+             打开一个折叠,同zo
-             将tag折叠起来,同zc
*             打开所有的折叠,同zR
=             将所有tag折叠起来,同zM
[[            跳到前一个文件
]]            跳到后一个文件
q             关闭taglist窗口
<F1>          显示帮助

可以用“:TlistOpen”打开taglist窗口,用“:TlistClose”关闭taglist窗口。或者使用“:TlistToggle”在打开和关闭间切换。

在我的.vimrc中定义了下面的映射,使用“,tl”键就可以打开/关闭taglist窗口:

map <silent> <leader>tl :TlistToggle<cr>
      本文参考 http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx在此表示感谢。 

        首先在建立~/.vim,以后所有的插件都存放在此。在.vim下分别建立doc、syntax、plugin三个文件夹分别存放插件帮助文档、语法文件、插件。 

         1、ctags 
        软件功能:用于产生一个tags文件(代码索引文件),tags文件中记录的源文件的索引以帮助你快速得找到某个符号的定义。它支持相当多的语言,如C、C++、C#、Shell等等。后面所有的包括函数列表显示,变量定义跳转,自动补全等,都要依赖于它。 
        ctags的全名叫做“Exuberant Ctags”,可以从新立得里面找到。 
        可以通过在vim中输入 
        :!ctags -R 
        在当前路径下建立一个tags文件,然后就可以在vim中使用跳转功能了。其中的-R选项是递归搜索子目录下的相关符号。所谓跳转就是可以随时转到自己想要的函数、类型、结构体、类等等的定义处。比如光标处于任意位置时可以普通模式下输入 
        :ta func_name 
        就可以直接将光标定位到func_name函数处。当然,其他的命名也可以使用这种方法进行快速定位。另外就是可以在光标指向一个函数名时按下Ctrl+],马上跳转到这个函数的定义。在跳转到定义位置之后,可以按下Ctrl+o快速返回原来的编辑位置。 
        如果tags文件不再当前目录下则用 
        :set tags=filename  来指定。 
        PS:ctags是一个程序用于生成tags文件。tags文件是当前目录下所有源文件的标签链接文件。在一个没有ctags的vim中只是无法生成新的tags文件,但是已有的tags文件仍然可以使用。 

         2、taglist 
        下载地址: http://www.vim.org/scripts/script.php?script_id=273 
        在Vim的一个垂直或水平的分割窗口中显示一个文件中定义的tags(函数,类,结构,变量等)。 
        在.vimrc中加入如下设置: 
Java代码   收藏代码
  1. "不同时显示多个文件的tag,只显示当前文件的  
  2. let Tlist_Show_One_File=1  
  3. "如果taglist窗口是最后一个窗口,则退出vim  
  4. let Tlist_Exit_OnlyWindow=1  

        在vim中用如下命令打开taglist窗口 
Java代码   收藏代码
  1. :Tlist  

        将taglist帮助文件放在~/.vim/doc目录下,如果需要使用:help taglist.txt命令查看帮助文档,需要事先在vim中执行如下命令: 
Java代码   收藏代码
  1. :helptags ~/.vim/doc  

        使用:将光标移动到taglist窗口的tag上面,按回车即可跳转到此tag的定义处,如果只想查看此tag的完整名称表达,按空格。 

         3、WinManager 
        下载地址: http://www.vim.org/scripts/script.php?script_id=95 
        WinManager可以在vim中像taglist一样开一个窗口来浏览工程文件。其实vim自带了文件浏览的插件netrw.vim。只不过WinManager将taglist和netrw整合在了一起。在WinManager界面上可以用下面的一些命令来进行常用的目录和文件操作: 
<F1>显示帮助
<cr>如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
-返回上级目录
c切换vim 当前工作目录正在浏览的目录
d创建目录
D删除目录或文件
i切换显示方式
R文件或目录重命名
s选择排序方式
x定制浏览方式, 使用你指定的程序打开该文件

        在.vimrc中加入如下配置: 
Java代码   收藏代码
  1. "设置WinManager与TagList的布局:前者在上,后者在下  
  2. let g:winManagerWindowLayout='FileExplorer|TagList'  
  3. "映射WinManager快捷键,在normal模式下按wm,控制开启和关闭  
  4. nmap wm :WMToggle<CR>  


         4、MiniBufExplorer 
        下载地址: http://www.vim.org/scripts/script.php?script_id=159 
        简单的说就是标签页文件。当vim打开单个文件的时候,MiniBufExplorer没什么作用。当打开两个以上的文件时,MiniBufExplorer会在vim的上面打开一个新的窗口空间,列出了已经打开的文件。把光标放到这个窗口上面时,可以有如下的几个命令使用: 
<Tab>向前循环切换到每个buffer名上
<S-Tab>向后循环切换到每个buffer名上
<Enter>在打开光标所在的buffer
d删除光标所在的buffer

        下面的两个功能需要在.vimrc中加入: 
Java代码   收藏代码
  1. let g:miniBufExplMapCTabSwitchBufs = 1  

<C-Tab>向前循环切换到每个buffer上,并在但前窗口打开
<C-S-Tab>向后循环切换到每个buffer上,并在但前窗口打开

        如果在.vimrc中设置了下面这句: 
Java代码   收藏代码
  1. let g:miniBufExplMapWindowNavVim=1  

则可以用<C-h,j,k,l>切换到上下左右的窗口中去,就像: 
C-w,h j k l    向"左,下,上,右"切换窗口. 
        在.vimrc中设置: 
Java代码   收藏代码
  1. let g:miniBufExplMapWindowNavArrows=1  

        是用<C-箭头键>切换到上下左右窗口中去. 
        主要命令: 
        :MiniBufExplorer    " Open and/or goto Explorer 
        :CMiniBufExplorer   " Close the Explorer if it's open 
        :UMiniBufExplorer   " Update Explorer without navigating 
        :TMiniBufExplorer   " Toggle the Explorer window open and closed. 

         5、在工程中查找——Grep 
        下载地址: http://www.vim.org/scripts/script.php?script_id=311 
        对光标所在的词来个全工程范围的grep。 
:Grep按照指定的规则在指定的文件中查找
:Rgrep同上, 但是是递归的grep
:GrepBuffer在所有打开的缓冲区中查找
:Bgrep同上
:GrepArgs在vim的argument filenames (:args)中查找
:Fgrep运行fgrep
:Rfgrep运行递归的fgrep
:Egrep运行egrep
:Regrep运行递归的egrep
:Agrep运行agrep
:Ragrep运行递归的agrep

        上面的命令是这样调用的: 
:Grep   [<grep_options>] [<search_pattern> [<file_name(s)>]]
:Rgrep  [<grep_options>] [<search_pattern> [<file_name(s)>]]
:Fgrep  [<grep_options>] [<search_pattern> [<file_name(s)>]]
:Rfgrep [<grep_options>] [<search_pattern> [<file_name(s)>]]
:Egrep  [<grep_options>] [<search_pattern> [<file_name(s)>]]
:Regrep [<grep_options>] [<search_pattern> [<file_name(s)>]]
:Agrep  [<grep_options>] [<search_pattern> [<file_name(s)>]]
:Ragrep [<grep_options>] [<search_pattern> [<file_name(s)>]]
:GrepBuffer [<grep_options>] [<search_pattern>]
:Bgrep [<grep_options>] [<search_pattern>]
:GrepArgs [<grep_options>] [<search_pattern>]

        为了简化操作,在.vimrc中加入如下配置: 
Java代码   收藏代码
  1. nnoremap <silent> <F3> :Rgrep<CR>  

        将光标移到需要查找的单词上面,按F3即可。比如查找ABC: 
        在最下面的命令行会显示: 
        Search for pattern: ABC 
        此时你还可以编辑该行, grep支持正则表达式。 
        按下回车后,在最下面的命令行会显示: 
        Search in files: * 
        是问搜索范围, 默认是该目录下的所有文件, 此时你还可以编辑该行, 比如你只想搜索源码文件: 
        Search in files: *.c *.h 
        然后在按下回车, 会在弹出的QuickFix窗口中列出所有符合条件的搜索结果, 你可以在其中查找你想要的结果。 

         6、NERD_commenter——添加注释 
        下载地址: http://www.vim.org/scripts/script.php?script_id=1218 
        <leader>cc 添加注释 
        <leader>cu 取消注释 

         7、Python代码折叠——python_ifold 
        下载地址: http://www.vim.org/scripts/script.php?script_id=2002 
        python_ifold是python_fold的改进版本。 
        可实现Python代码的折叠。打开Python脚本时会发现所有的代码已经折叠了,其中还现了折叠部分拥有的行数。在折叠的行按下zo可以打开折叠,按下zc会折叠上代码。python_ifold是默认启用的。 

         8、pydicton——python代码智能补全 
        下载地址: http://www.vim.org/scripts/script.php?script_id=850 
        pydiction-1.2中有四个文件,除了帮助文档和插件之外,还有两个分别是:complete-dict和pydiction.py。 
        其中complete-dict放在~/.vim/tools目录下。pydiction.py是可选文件,官网上的解释是: 
        Python script used to generate the dictionary. You can optionally run this script to add more modules to complete. 
        .vimrc中需要如下配置: 
Java代码   收藏代码
  1. autocmd FileType python set complete+=k~/.vim/tools/complete-dict  


         9、NERD_tree 
        下载地址: http://www.vim.org/scripts/script.php?script_id=1658 
        由于WinManager的fileexplorer功能不能自动更新,相比之下NERD_tree就强大许多了。 

         10、AutoComplPop——自动提示 
        下载地址: http://www.vim.org/scripts/script.php?script_id=1879 
        解压之后会有三个文件夹,全部放到.vim目录下。特别是别忘了autoload这个目录下的acp.vim也要放到.vim相应的autoload目录下。 

         11、vimIM——vim的中文输入插件 
        下载地址: http://vimim.googlecode.com/svn/vimim/vimim.html 
        ctrl+\ 直接在vim中切换输入法。也可以输入英文,然后ctrl+6,显示中文。 

         12、auto-pairs——括号自动配对 
        下载地址: https://github.com/jiangmiao/auto-pairs 

         13、xml编辑插件——标签自动配对 
        下载地址: http://www.vim.org/scripts/script.php?script_id=1397 
        也支持html、xhtml、docbk、xsl等。详见主页说明。



  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

特立独行的猫a

您的鼓励是我的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值