vim 配置&插件分享

来源:互联网 发布:如何测量网络成瘾 编辑:程序博客网 时间:2024/05/16 18:25
 

转载自 http://a.vifix.us/blog/vim-%E9%85%8D%E7%BD%AE%E6%8F%92%E4%BB%B6%E5%88%86%E4%BA%AB

此文在vim中完成,全文较长,请耐心阅读。自从去年开始尝试使用神器vim,经过数月使用,我对编辑器有了新的认识。观念可以说是发生了翻天覆地的变化。
即以此文献给在vim学习中的人们。

编译及配置好的windowsvim包,linux版的配置包,vim hacking等资料(见此链接):
http://cid-5f8d83c1437ef717.office.live.com/browse.aspx/vim

vim配置&插件分享

Date: 2010/07/23
version: 0.7

0.引言
俗话说,工欲善其事,必先利其器。
一个好的顺手的工具,可以大大的提供工作的效率。可以让生活变得更美好~

目前在linux下做开发,最常用最强大的两种编辑器为vimemacs

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.vim.org下载到,目前最新版为7.2。不过
如果你有兴趣,推荐下载源码编译,目前svn上的源码已经patch到了7.2.4467.3已经
进入beta阶段。

1.2windows下安装vim
windows
下安装vim只需要执行安装程序,选择安装路径,然后一路next即可完成。
windows
下安装vim完成后通常会有如下目录结构:
E:\Vim\vim72\ vim
主程序,及其默认插件的安装目录
E:\Vim\vimfiles\
自行安装插件的目录
E:\Vim\_vimrc vim
配置文件

1.3Linux下安装vim
通常linux的发行版都会自带编译好的vim在内,不过这个通常版本会比较老,或者是一个
small
版的,所以我们需要从源码编译最新的huge
hugevim编译时的一个参数,
huge版会包含最多的程序特性,tiny版为最少)

1.3.1下载
通过svn下载vim源码:
cd ~/
svn co
https://vim.svn.sourceforge.net/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.vim.org上对应的ID号,第二个
参数为你当前使用的版本号,第三个参数表示此脚本会在下载完成后自动安装(
windows
下无效),第四个为插件名。

执行:GVLS:GetLatestVimScripts命令即可自动开始下载插件。
更详细帮助,可以用:help GeLatestVimScript命令查询。

3.2 a
用于在.h.c/.cpp之间快速切换,在normal模式下输入命令:A

http://www.vim.org/scripts/script.php?script_id=31

3.3 drawit
这是一个很有趣的插件,可以很方便的使用ascii码绘图,使用:help drawit查询
drawit
的用法。
<leadr>di为开始绘图,<leader>ds为停止绘图。

http://www.vim.org/scripts/script.php?script_id=40

3.4 bufexplorer
vim
中可以同时打开多个文件,可以在不同的tab中打开,也可以在同一个tab中分割或者
同一个tab中后台打开,虽然vim本身提供了后台切换的命令,不过比较繁琐,要很方便的
进行切换就需要用到此插件了。此插件默认的快捷键为
<leader>be

http://www.vim.org/scripts/script.php?script_id=42

3.5 TeTrIs
这个插件不解释。。看到名字很多人其实就懂了
(哥你懂的),快捷键是<leader>te

http://www.vim.org/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.vim.org/scripts/script.php?script_id=213

3.7 taglist
此插件的作用是分割出一个窗口用来现在当前打开的文件的tag:Tlist即可打开tag窗口
还有其他:Tlistupdate, :tlisttoggle等命令,详见帮助:help taglist.txt
顺带一提~此插件我在vimrc中映射的快捷键为
<leader>t

http://www.vim.org/scripts/script.php?script_id=273

3.8 bash-support
此插件与cvim一样,都是功能增强类的插件,不过这个插件从名字就可以看出,是用来支
bash脚本的,做bash脚本开发的人可以用到,其他人其实也就没什么必要了,完全可以
删掉对应的文件。

http://www.vim.org/scripts/script.php?script_id=365

3.9 mru
这个插件用来记录最近打开过的文件,gvim中增加了一个菜单列表,在vim中需要使用命
令查看:MRU:Mru

http://www.vim.org/scripts/script.php?script_id=521

3.10 NERD_commenter
这个插件是用来添加注释的。可以用来注释掉一行或若干行,快捷键为
<leader>cc添加注释
<leader>cu取消注释

http://www.vim.org/scripts/script.php?script_id=1218

3.11 yankring
vim
的剪贴板支持多重记录,也就是说凡是你复制过的文字都已经被收集了,在以后可以
直接从剪贴板中选取。不过同样自带的功能不是很方便,所以就有了这个插件,此插件的
常用命令如下:
:YRShow
打开yank窗口
:YRClear
清除所有的记录
更多命令请查看帮助:help yankring
顺带一提~ :YRShowvimrc中映射的快捷键为
<leader>y

http://www.vim.org/scripts/script.php?script_id=1234

3.12 mark
这个插件呢~如其名mark,呃还真不好解释,直接看视频吧~
常用的快捷键有
<leader>m标记某symbol
<leader>n清除某symbolmark
# 向上搜索同色的mark
* 向下搜索同色的mark

http://www.vim.org/scripts/script.php?script_id=1238

3.13 FencView
这个插件用于检测文件的编码
unicodeutf8gbkeuc-jp等等),在打开一个文件的
时候会自动进行编码检测,有些文件有可能自动检测失败,此时只要执行
:FencAutoDetect
来重新侦测即可。
PS
:此插件需要iconv支持,windows下需要自行下载iconv.dll放入vim.exe所在目录,
linux
一般都自带了iconv,所以不需要进行下载。

http://www.vim.org/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.vim.org/scripts/script.php?script_id=1735

3.15 vim-autocomplpop
这个插件是用来自动弹出补全列表,也就是传说中的自动补全了,不用解释~也没有啥快
捷键啥的,just typing~

http://www.vim.org/scripts/script.php?script_id=1879

3.16 EasyGrep
这个插件,是对vimgrep命令进行了封装,如果没有此插件,要进行grep搜索,需要键
:vimgrep xx **然后在搜索完成后再键入:cope打开Quickfix列表。有了这个插件只需
将光标移动到要搜索的单词上,然后
<leader>vv即可~也可以<leader>vo来设定EasyGrep
的参数。更多的命令及快捷键,去看帮助吧~

http://www.vim.org/scripts/script.php?script_id=2438

3.17 vimim
这个插件呢。。是利用vim的智能补全功能实现中文输入法
(拼音,双拼,五笔,及各种
形码),在插入模式下按CTRL+\切换到中文模式,然后输入对应的字即可。
vimim
在没有本地词库的情况下会进行云输入,连接搜狗,QQ等云输入法的在线词库,云
输入对整句组词等支持较好,不过对网络的依赖也比较大。
当然也可以自己下载本地的词库,速度更快,不受网络影响,不过组句什么的就要比在
线的云输入法差很多了。
这篇文章有很大一部分就是使用vimim完成的~

vimim我就不录视频了,官方提供的三个视频要比我做的好的多~

vimim官方网址
http://vimim.googlecode.com/svn/vimim/vimim.html

3.18 sinpMate
这是一个非常传奇的插件,代码片段完成,支持c/c++pythonjavascripthtml,perl
php等语言,并且可以通过自定义来实现更多功能。
此插件使用非常简单,只要输入某些可以完成的提示符,然后按Tab键即可。

http://www.vim.org/scripts/script.php?script_id=2540

3.19 txtbrowser
这个插件有两个作用:
1)用来按照固定格式高亮txt文件中的关键字
2)将固定格式的标题输出到taglist中显示
不需要啥快捷键,在vim启动时自动加载只要是固定格式即可。

http://www.vim.org/scripts/script.php?script_id=2899

3.20 histwin
vim7
之后提供了一个非常有用的特性——undo-branch,不过同样自带的并不是很
好用,所以我们需要使用这个插件。这个插件非常易用,只需要输入:UB即可看到
undolist
的内容。并可以对不同的branch进行对比,或者回到以前的某个修改版,不过
undo list
的缺点是在vim关闭之后就失效了,它只能记录vim在运行时的修改记录。

http://www.vim.org/scripts/script.php?script_id=2932

3.21 zencoding
此插件用于快速编辑html文件,和snipMate插件比较类似,不过功能更强大一些。
默认激活补全的快捷键为Ctrl+y,

由于我本身写html也不是很多,所以此插件的演示视频请看官方提供的
http://vimeo.com/7405114
另外这里还有一篇网友写的教程
http://nootn.com/blog/tag/ZenCoding/

http://www.vim.org/scripts/script.php?script_id=2981

3.22 cscope_maps
cscope_maps
并没有出现在GetLatestVimScript.dat中的插件,此插件的作用为给vim添加
cscope
的快捷键。
cscope
是个是东西呢~ cscopectags差不多,但是它仅支持c语言。不过cscope的功能要
ctags强大的多,ctags进支持definition查询,而cscope支持callreference
definition
include等等查询,在比较大的项目中可以很方便的查看函数间的调用关系
等。

cscope的官方网站,有一篇专门介绍在vim中使用cscope的文章
英文:
http://cscope.sourceforge.net/cscope_vim_tutorial.html
中文:
http://www.gracecode.com/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.vim.org/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.dcweb.cn/

vimer的程序世界
http://www.vimer.cn/

Vim –闲耘 Wiki
http://hotoo.googlecode.com/svn/vimwiki/Vim.html

vim google group(需要翻墙)
https://groups.google.com/group/Vim-cn/

水木清华vim
http://www.newsmth.net/bbsdoc.php?board=VIM

豆瓣vim小组
http://www.douban.com/group/vim/

善用佳软http://xbeta.info/
善用佳软是以一个非程序员的角度来使用vim的,也有很多值得学习的地方。

5. FIN
不知不觉的扯了这么多,感谢一直到现在还没有被恶心死的各位。

各位如果在使用中遇到任何问题,欢迎提出我将竭尽所能来提供帮助。
当然如果你发现了更加高效或者有趣的用法也请与我分享。多谢~~

原创粉丝点击