此文在vim中完成,全文较长,请耐心阅读。自从去年开始尝试使用神器vim,经过数月使用,我对编辑器有了新的认识。观念可以说是发生了翻天覆地的变化。
即以此文献给在vim学习中的人们。
编译及配置好的windows版vim包,linux版的配置包,vim hacking等资料(见此链接):
http://cid-5f8d83c1437ef717.office./browse.aspx/vim
vim 配置&插件分享
Date: 2010/07/23
version: 0.7
0. 引言
俗话说,工欲善其事,必先利其器。
一个好的顺手的工具,可以大大的提供工作的效率。可以让生活变得更美好~
目前在linux下做开发,最常用最强大的两种编辑器为vim和emacs。
vim称得上是编辑器之神,几乎所有的平台都有提供,简单快捷。
而emacs是神用的编辑器,emacs更像是一个操作系统(据说emacs还提供了煮咖啡的接口
)。关于emacs有一个笑话,使用emacs的人只需要longin -> run emacs -> logout即可。
vi还是emacs更好的争论,已经持续了几十年,而且也将继续进行下去。我们无意争论这
些,适合自己的才是最好的。
有很多朋友都在用vim,也经常听到有人抱怨“vim怎么那么难用”,不可否认vim确实
有一个比较陡峭的学习曲线,但是一旦掌握,将会受益终身。不过有很多人都是在用默
认的配置,或者在使用vi,这样不能说是错,但是效率会低很多~要高效率的使用工具,
必须对它进行很好的调整。今天跟大家分享一下我的vim的配置及常用插件。
1. 安装vim
1.1 下载vim
vim的最新版可以从官方网站 http://www. 下载到,目前最新版为7.2。不过
如果你有兴趣,推荐下载源码编译,目前svn上的源码已经patch到了7.2.446,7.3已经
进入beta阶段。
1.2 在windows下安装vim
windows下安装vim只需要执行安装程序,选择安装路径,然后一路next即可完成。
windows下安装vim完成后通常会有如下目录结构:
E:\Vim\vim72\ vim主程序,及其默认插件的安装目录
E:\Vim\vimfiles\ 自行安装插件的目录
E:\Vim\_vimrc vim配置文件
1.3 在Linux下安装vim
通常linux的发行版都会自带编译好的vim在内,不过这个通常版本会比较老,或者是一个
small版的,所以我们需要从源码编译最新的huge版(huge为vim编译时的一个参数,
huge版会包含最多的程序特性,tiny版为最少)
1.3.1 下载
通过svn下载vim源码:
cd ~/
svn co https://vim.svn./svnroot/vim/vim7
1.3.2 编译 & 安装
windows下编译
可以使用vc2008也可以使用MinGW或者gcc等都可以。
VC2008,打开cmd,进入源码所在的目录,执行src目录下的msvc2008.bat
然后,分别执行
编译gvim
nmake -f Make_msvc.mak FEATRUES=HUGE GUI=YES OLE=YES
编译vim
nmake -f Make_msvc.mak FEATURES=HUGE GUI=NO
其他编译器基本一致,只需要替换对应的指令及makefile即可。
linux下编译
cd ~/vim7
./configure --with-features=huge
make
make install
1.3.3 创建配置文件
将现有的vim配置文件复制到 ~/ 下,或者新建配置文件。
cp dest_path/.vimrc ~/.vimrc
or
touch ~/.vimrc
1.3.4 创建插件目录
mkdir ~/.vim
1.3.5 懒人的方法
直接将我提供的压缩包解压到 ~/ 下即可
cd ~/
tar zxvf vimconfig.zip
1.4 vim使用
如果你是vim新手,推荐先花几十分钟时间看一遍vimtutor,了解基本的操作。
windows下执行对应的快捷方式。
linux下需要执行vimtutor命令。
2. vim配置文件简介
2.1 vimrc简介
.vimrc(linux)/_vimrc(windows),这个文件是vim的标准配置文件名,实质上就是一堆
vim的脚本,命令的集合。这里我只介绍关键的一些设定,更多的设定可以看vimrc,
里面每项设定都有注释。
2.1.1 set nocompatible
关闭vi兼容模式,只有关闭了兼容模式之后,vim添加的那些功能及设定才可以生效。
2.1.2 filetype plugin indent on
打开文件类型,插件及缩进功能。
2.1.3 leader键
vim定义了一个按键,称为leader键,用于和其他按键组合,默认为"\",为了方便按我把
它map到了","上。leader键在定义快捷键的时候会写为<leader>,此时只要按逗号就可以
了。
2.1.4 Fast Saving
vim默认保存文件需要使用:write或简写为:w,为了方便保存文件,我添加了一个
快捷键来保存(随时保存文件是一个好习惯)
nmap <leader>w :w!<cr>
在正常模式下leader键,然后按w即可。
2.1.5 syntax enable
打开语法高亮,设定此项后,对于不同的关键字,变量等就会以不同的颜色显示,在
很多编辑器中都有此功能。
2.1.6 字体设置
此项的设置方法见vimrc中第49-54行
2.1.7 colorscheme
此命令用来设置vim的配色,在vim官网中大概有上千种不同的配色,下载后放入
~/.vim/color目录中,然后使用colorscheme命令来指定对应的配色即可。比如我要使用
自带的desert,只需在vimrc添加如下命令,或者在运行时动态指定。
:colorscheme desert
见vimrc文件第56-66行。
2.1.8 set cursorline
高亮光标所在行,如果你不喜欢这个特性,注释配置文件中的此句即可。
2.1.9 显示tab及行尾空格
set listchars=tab:>-,trail:-
set list
将tab符显示为>---,并将行尾的空格显示为-。如果你不喜欢这个特性,注释这两句
即可。
2.1.10 移除行尾空格
按F2移除行尾空格,美化代码
map <F2> :%s/\s*$//g<cr>:noh<cr>''
2.1.11 显示/隐藏工具栏和菜单栏(仅对于gvim有效)
"默认不显示工具栏和菜单栏
set guioptions-=m
set guioptions-=T
按F显示/隐藏工具栏和菜单栏
map <silent> <F4> :if &guioptions =~# 'T' <Bar>
\set guioptions-=T <Bar>
\set guioptions-=m <Bar>
\else <Bar>
\set guioptions+=T <Bar>
\set guioptions+=m <Bar>
\endif<CR>
2.2 vim帮助
vim的帮助功能非常好用,任何命令的用法都可以打:help xx 进行查询。
vim的帮助文件格式为txt,保存在doc目录下,使用:help xx 调用之后可以按
ctrl+]进行跳转,ctrl+t返回。
因为帮助的跳转功能需要用到特殊的tag,而此tags需要在vim 中使用
:helptags ~/.vim/doc
命令生成,每当添加或删除了帮助文件之后都需要进行此操作。
3. 插件简介
以下为我所安装的一些插件,为了更便于理解,我为每个插件录制了一段演示视频。
3.1 GetLatestVimScript
介绍自定义插件之前,先要介绍一个特殊的文件GetLatestVimScripts.dat,位于
~/.vim/GetLatest/ (linux)
或者
$vim\vimfiles\GetLatest\ (windows)
目录下。
此文件为vim自带插件GetLatestVimScripts的配置文件,用来更新插件之用,格式如下:
ScriptID SourceID Filename
--------------------------
31 7218 :AutoInstall: a.vim
前两行为必须内容,第三行第一个参数是此插件在 www. 上对应的ID号,第二个
参数为你当前使用的版本号,第三个参数表示此脚本会在下载完成后自动安装(
windows下无效),第四个为插件名。
执行:GVLS或:GetLatestVimScripts命令即可自动开始下载插件。
更详细帮助,可以用:help GeLatestVimScript命令查询。
3.2 a
用于在.h与.c/.cpp之间快速切换,在normal模式下输入命令:A
http://www./scripts/script.php?script_id=31
3.3 drawit
这是一个很有趣的插件,可以很方便的使用ascii码绘图,使用:help drawit 查询
drawit的用法。<leadr>di为开始绘图,<leader>ds为停止绘图。
http://www./scripts/script.php?script_id=40
3.4 bufexplorer
vim中可以同时打开多个文件,可以在不同的tab中打开,也可以在同一个tab中分割或者
同一个tab中后台打开,虽然vim本身提供了后台切换的命令,不过比较繁琐,要很方便的
进行切换就需要用到此插件了。此插件默认的快捷键为<leader>be
http://www./scripts/script.php?script_id=42
3.5 TeTrIs
这个插件不解释。。看到名字很多人其实就懂了(哥你懂的),快捷键是<leader>te
http://www./scripts/script.php?script_id=172
3.6 cvim
这个插件是c/cpp的插件,把vim变成c/c++的IDE,在gvim中会多出一个菜单,在vim中就
只能用快捷键来进行对应的操作了。相关的快捷键较多,可以查看帮助获得更多的信息。
:help csupport
常用快捷键有以下几个:
\rr 运行
\rc 编译
\rl 连接
\rm make
\ra 设定运行的参数
http://www./scripts/script.php?script_id=213
3.7 taglist
此插件的作用是分割出一个窗口用来现在当前打开的文件的tag,:Tlist即可打开tag窗口
还有其他:Tlistupdate, :tlisttoggle等命令,详见帮助:help taglist.txt
顺带一提~此插件我在vimrc中映射的快捷键为<leader>t
http://www./scripts/script.php?script_id=273
3.8 bash-support
此插件与cvim一样,都是功能增强类的插件,不过这个插件从名字就可以看出,是用来支
持bash脚本的,做bash脚本开发的人可以用到,其他人其实也就没什么必要了,完全可以
删掉对应的文件。
http://www./scripts/script.php?script_id=365
3.9 mru
这个插件用来记录最近打开过的文件,gvim中增加了一个菜单列表,在vim中需要使用命
令查看:MRU或:Mru
http://www./scripts/script.php?script_id=521
3.10 NERD_commenter
这个插件是用来添加注释的。可以用来注释掉一行或若干行,快捷键为
<leader>cc 添加注释
<leader>cu 取消注释
http://www./scripts/script.php?script_id=1218
3.11 yankring
vim的剪贴板支持多重记录,也就是说凡是你复制过的文字都已经被收集了,在以后可以
直接从剪贴板中选取。不过同样自带的功能不是很方便,所以就有了这个插件,此插件的
常用命令如下:
:YRShow 打开yank窗口
:YRClear 清除所有的记录
更多命令请查看帮助:help yankring
顺带一提~ :YRShow在vimrc中映射的快捷键为<leader>y
http://www./scripts/script.php?script_id=1234
3.12 mark
这个插件呢~如其名mark,呃还真不好解释,直接看视频吧~
常用的快捷键有
<leader>m 标记某symbol
<leader>n 清除某symbol的mark
# 向上搜索同色的mark
* 向下搜索同色的mark
http://www./scripts/script.php?script_id=1238
3.13 FencView
这个插件用于检测文件的编码(unicode,utf8,gbk,euc-jp等等),在打开一个文件的
时候会自动进行编码检测,有些文件有可能自动检测失败,此时只要执行
:FencAutoDetect 来重新侦测即可。
PS:此插件需要iconv支持,windows下需要自行下载iconv.dll放入vim.exe所在目录,
linux一般都自带了iconv,所以不需要进行下载。
http://www./scripts/script.php?script_id=1708
3.14 echofunc
此插件用来提示c/c++函数的原型,在写函数调用的时候比较有用。
当输入到xx(的时候,就会在状态栏提示对应的函数原型。
当有多个原生存在的时候,按ALT+, ALT-进行切换。
此插件需要生成对应tags文件,在生成tags时加上--fileds=+lS即
ctags -R --fields=+lS
顺带一提~ vimrc中生成tags文件的快捷键为F12
http://www./scripts/script.php?script_id=1735
3.15 vim-autocomplpop
这个插件是用来自动弹出补全列表,也就是传说中的自动补全了,不用解释~ 也没有啥快
捷键啥的,just typing~
http://www./scripts/script.php?script_id=1879
3.16 EasyGrep
这个插件,是对vim的grep命令进行了封装,如果没有此插件,要进行grep搜索,需要键
入:vimgrep xx ** 然后在搜索完成后再键入:cope打开Quickfix列表。有了这个插件只需
将光标移动到要搜索的单词上,然后<leader>vv即可~ 也可以<leader>vo来设定EasyGrep
的参数。更多的命令及快捷键,去看帮助吧~
http://www./scripts/script.php?script_id=2438
3.17 vimim
这个插件呢。。是利用vim的智能补全功能实现中文输入法(拼音,双拼,五笔,及各种
形码),在插入模式下按CTRL+\切换到中文模式,然后输入对应的字即可。
vimim在没有本地词库的情况下会进行云输入,连接搜狗,QQ等云输入法的在线词库,云
输入对整句组词等支持较好,不过对网络的依赖也比较大。
当然也可以自己下载本地的词库,速度更快,不受网络影响,不过组句什么的就要比在
线的云输入法差很多了。
这篇文章有很大一部分就是使用vimim完成的~
vimim我就不录视频了,官方提供的三个视频要比我做的好的多~
vimim官方网址
http://vimim./svn/vimim/vimim.html
3.18 sinpMate
这是一个非常传奇的插件,代码片段完成,支持c/c++,python,javascript,html,perl
,php等语言,并且可以通过自定义来实现更多功能。
此插件使用非常简单,只要输入某些可以完成的提示符,然后按Tab键即可。
http://www./scripts/script.php?script_id=2540
3.19 txtbrowser
这个插件有两个作用:
1) 用来按照固定格式高亮txt文件中的关键字
2) 将固定格式的标题输出到taglist中显示
不需要啥快捷键,在vim启动时自动加载只要是固定格式即可。
http://www./scripts/script.php?script_id=2899
3.20 histwin
vim7之后提供了一个非常有用的特性——undo-branch,不过同样自带的并不是很
好用,所以我们需要使用这个插件。这个插件非常易用,只需要输入:UB即可看到
undolist的内容。并可以对不同的branch进行对比,或者回到以前的某个修改版,不过
undo list 的缺点是在vim关闭之后就失效了,它只能记录vim在运行时的修改记录。
http://www./scripts/script.php?script_id=2932
3.21 zencoding
此插件用于快速编辑html文件,和snipMate插件比较类似,不过功能更强大一些。
默认激活补全的快捷键为Ctrl+y,
由于我本身写html也不是很多,所以此插件的演示视频请看官方提供的
http:///7405114
另外这里还有一篇网友写的教程
http:///blog/tag/ZenCoding/
http://www./scripts/script.php?script_id=2981
3.22 cscope_maps
cscope_maps并没有出现在GetLatestVimScript.dat中的插件,此插件的作用为给vim添加
cscope的快捷键。
cscope是个是东西呢~ cscope和ctags差不多,但是它仅支持c语言。不过cscope的功能要
比ctags强大的多,ctags进支持definition查询,而cscope支持call,reference,
definition,include等等查询,在比较大的项目中可以很方便的查看函数间的调用关系
等。
在cscope的官方网站,有一篇专门介绍在vim中使用cscope的文章
英文:http://cscope./cscope_vim_tutorial.html
中文:http://www./manual/cscope_vim_tutorial_zh.html
3.23 CppOmniComplete
vim目前自带的智能补全不支持c++,而且因为一些奇怪的原因,性能非常之差,每次弹出
补全菜单都需要等很久。还好vim是支持扩展的,有一个第三方的插件可以使用。
cppomnicomplete支持c++/c的智能补全,不过因为需要tag支持,所以在建立tags时需要
加上特殊的参数。
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
在生成了对应的tags文件后,只要在输入结构体或者类对象的时候按.或者
->就会弹出补全菜单,有时候可能未弹出补全菜单只需按Ctrl+X Ctrl+O即可手动弹出
菜单。
http://www./scripts/script.php?script_id=1520
4. 其他
vim作者Bram Moolenaar曾经做过一个演讲叫《7 Habits For Effective Text
Editing》,介绍了如何高效的使用编辑器,推荐有兴趣的朋友看看.
vim的书籍比较多,vim-manuscript这本书作为入门教材非常不错。
hacking vim算是比较新的书,作为vim进阶参考也比较不错。
vim的相关文章,网络上还可以找到很多,有很多高手存在。以下是几个比较不错的网站
Wu Yongwei's Programming Page
http://wyw./
vimer的程序世界
http://www./
Vim - 闲耘 Wiki
http://hotoo./svn/vimwiki/Vim.html
vim google group(需要翻墙)
https://groups.google.com/group/Vim-cn/
水木清华vim版
http://www./bbsdoc.php?board=VIM
豆瓣vim小组
http://www.douban.com/group/vim/
善用佳软 http:///
善用佳软是以一个非程序员的角度来使用vim的,也有很多值得学习的地方。
5. FIN
不知不觉的扯了这么多,感谢一直到现在还没有被恶心死的各位。
各位如果在使用中遇到任何问题,欢迎提出我将竭尽所能来提供帮助。
当然如果你发现了更加高效或者有趣的用法也请与我分享。多谢~~
|