将Vim改造为强大的IDEVim集成CtagsTaglistCscopeWinmanagerNERDTreeOmniCppComplete有图有真相.docx
《将Vim改造为强大的IDEVim集成CtagsTaglistCscopeWinmanagerNERDTreeOmniCppComplete有图有真相.docx》由会员分享,可在线阅读,更多相关《将Vim改造为强大的IDEVim集成CtagsTaglistCscopeWinmanagerNERDTreeOmniCppComplete有图有真相.docx(15页珍藏版)》请在冰点文库上搜索。
将Vim改造为强大的IDEVim集成CtagsTaglistCscopeWinmanagerNERDTreeOmniCppComplete有图有真相
1、安装Vim和Vim基本插件
首先安装好Vim和Vim的基本插件。
这些使用apt-get安装即可:
lingd@ubuntu:
~/arm$sudoapt-getinstallvimvim-scriptsvim-doc
其中vim-scripts是vim的一些基本插件,包括语法高亮的支持、缩进等等。
vim中文帮助文档tar包下载地址:
解压后其中有个doc文件夹,将其中的内容全部复制到~/.vim/doc,或者vim安装目录下的doc目录中,此时vim中的help信息已经是中文的了.
网页版中文帮助文档网址
首页就时vim帮助文档的目录,阅读起来更方便有效、更有针对性!
2、Vim配置文件
Vim强大的功能,其来源基本上就两个地方:
Vim插件以及Vim配置文件。
Vim本身的系统配置文件夹是在/usr/share/vim/和/etc/vim/两个文件夹下。
一般情况下,我们不会去改变这两个文件夹下的配置文件,而是在用户文件夹/home/user(其中,user为用户名,我的用户名是lingd)下建立自己的配置文件。
进入用户文件夹(/home/user/)之后,用gedit新建一个名叫.vimrc的文件:
lingd@ubuntu:
~/arm$cd~
lingd@ubuntu:
~$gedit.vimrc
注:
使用gedit主要是为了方便大段大段的文字粘贴!
然后把下面的文字拷贝进这个文件之后保存:
"Thislineshouldnotberemovedasitensuresthatvariousoptionsare
"properlysettoworkwiththeVim-relatedpackagesavailableinDebian.
debian.vim
"UncommentthenextlinetomakeVimmoreVi-compatible
"NOTE:
debian.vimsets'nocompatible'.Setting'compatible'changesnumerous
"options,soanyotheroptionsshouldbesetAFTERsetting'compatible'.
setnocompatible
"Vim5andlaterversionssupportsyntaxhighlighting.Uncommentingthe
"followingenablessyntaxhighlightingbydefault.
ifhas("syntax")
syntaxon"语法高亮
endif
colorschemeron"elflordronpeachpuffdefault设置配色方案,vim自带的配色方案保存在/usr/share/vim/vim72/colors目录下
"detectfiletype
filetypeon
filetypepluginon
"Ifusingadarkbackgroundwithintheeditingareaandsyntaxhighlighting
"turnonthisoptionaswell
setbackground=dark
"UncommentthefollowingtohaveVimjumptothelastpositionwhen
"reopeningafile
ifhas("autocmd")
auBufReadPost*ifline("'\"")>1&&line("'\"")<=line("$")|exe"normal!
g'\""|endif
"haveVimloadindentationrulesandpluginsaccordingtothedetectedfiletype
filetypepluginindenton
endif
"Thefollowingarecommentedoutastheycausevimtobehavealot
"differentlyfromregularVi.Theyarehighlyrecommendedthough.
"setignorecase"搜索模式里忽略大小写
"setsmartcase"如果搜索模式包含大写字符,不使用'ignorecase'选项。
只有在输入搜索模式并且打开'ignorecase'选项时才会使用。
setautowrite"自动把内容写回文件:
如果文件被修改过,在每个:
next、:
rewind、:
last、:
first、:
previous、:
stop、:
suspend、:
tag、:
!
、:
make、CTRL-]和CTRL-^命令时进行;用:
buffer、CTRL-O、CTRL-I、'{A-Z0-9}或`{A-Z0-9}命令转到别的文件时亦然。
setautoindent"设置自动对齐(缩进):
即每行的缩进值与上一行相等;使用noautoindent取消设置
"setsmartindent"智能对齐方式
settabstop=4"设置制表符(tab键)的宽度
setsofttabstop=4"设置软制表符的宽度
setshiftwidth=4"(自动)缩进使用的4个空格
setcindent"使用C/C++语言的自动缩进方式
setcinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:
1s"设置C/C++语言的具体缩进方式
"setbackspace=2"设置退格键可用
setshowmatch"设置匹配模式,显示匹配的括号
setlinebreak"整词换行
setwhichwrap=b,s,<,>,[,]"光标从行首和行末时可以跳到另一行去
"sethidden"Hidebufferswhentheyareabandoned
setmouse=a"Enablemouseusage(allmodes)"使用鼠标
setnumber"Enablelinenumber"显示行号
"setpreviewwindow"标识预览窗口
sethistory=50"setcommandhistoryto50"历史记录50条
"--状态行设置--
setlaststatus=2"总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态行
setruler"标尺,用于显示光标位置的行号和列号,逗号分隔。
每个窗口都有自己的标尺。
如果窗口有状态行,标尺在那里显示。
否则,它显示在屏幕的最后一行上。
"--命令行设置--
setshowcmd"命令行显示输入的命令
setshowmode"命令行显示vim当前模式
"--findsetting--
setincsearch"输入字符串就显示匹配点
sethlsearch
注:
配置文件中,以单个双引号开头的文字为注释。
保存文件之后,启动Vim。
此时,Vim已经是这种效果了(语法高亮挺漂亮的–这个是由vim-scripts中的插件支持的):
3、ctags安装与配置
ctags可以建立源码树的标签索引(标签就是一个标识符被定义的地方,如函数定义),使程序员在编程时能迅速定位函数、变量、宏定义等位置去查看原形
以下是在ubuntu下ctags的下载安装和配置过程:
下载并安装ctags,终端输入命令
lingd@ubuntu:
~/arm$sudoapt-getinstallctags
建立源码索引,比如我经常需要查阅Linux的内核代码,而这些代码放在/home/lingd/arm/linux-2.6.24.7目录下
那么在终端进入到该目录后,输入命令ctags-R*,你会发现多了一个tags文件,这个就是索引文件
lingd@ubuntu:
~/arm$cdlinux-2.6.24.7
lingd@ubuntu:
~/arm/linux-2.6.24.7$ls
arch crypto include kernel mm samples usr
block Documentation init lib net scripts
COPYING drivers ipc MAINTAINERS README security
CREDITS fs Kbuild Makefile REPORTING-BUGS sound
lingd@ubuntu:
~/arm/linux-2.6.24.7$ctags-R*
lingd@ubuntu:
~/arm/linux-2.6.24.7$ls
arch crypto include kernel mm samples tags
block Documentation init lib net scripts usr
COPYING drivers ipc MAINTAINERS README security
CREDITS fs Kbuild Makefile REPORTING-BUGS sound
向vim注册索引文件tags的路径,
lingd@ubuntu:
~/arm/linux-2.6.24.7$vi~/.vimrc
在打开文件的最后添加如下内容(当然,具体路径根据你自己的情况)
"--ctagssetting--
"按下F5重新生成tag文件,并更新taglist
map:
!
ctags-R--c++-kinds=+p--fields=+iaS--extra=+q.:
TlistUpdate
imap:
!
ctags-R--c++-kinds=+p--fields=+iaS--extra=+q.:
TlistUpdate
settags=tags
settags+=./tags"addcurrentdirectory'sgeneratedtagsfile
settags+=~/arm/linux-2.6.24.7/tags"addnewtagsfile(刚刚生成tags的路径,在ctags-R生成tags文件后,不要将tags移动到别的目录,否则ctrl+]时,会提示找不到源码文件)
settags+=./tags表示在当前工作目录下搜索tags文件
settags+=~/arm/linux-2.6.24.7/tags表示在搜寻tags文件的时候,也要搜寻~/arm/linux-2.6.24.7/文件夹下的tags文件。
然后保存并退出vi。
这样,你就可以用vim在任意地方查看有关Linux的函数原形
------------------------------------
tag命令用法:
Ctrl+] 跳到当前光标下单词的标签
Ctrl+O 返回上一个标签
Ctrl+T 返回上一个标签
:
tagTagName跳到TagName标签
以上命令是在当前窗口显示标签,当前窗口的文件替代为包标签的文件,当前窗口光标跳到标签位置。
如果不希望在当前窗口显示标签,可以使用以下命令:
:
stagTagName新窗口显示TagName标签,光标跳到标签处
Ctrl+W+] 新窗口显示当前光标下单词的标签,光标跳到标签处
当一个标签有多个匹配项时(函数(或类中的方法)被多次定义),":
tags"命令会跳转到第一处。
如果在当前文件中存在匹配,那它将会被首先使用。
可以用这些命令在各匹配的标签间移动:
:
tfirst 到第一个匹配
:
[count]tprevious向前[count]个匹配
:
[count]tnext 向后[count]个匹配
:
tlast 到最后一个匹配
或者使用以下命令选择要跳转到哪一个
:
tselectTagName
输入以上命令后,vim会为你展示一个选择列表。
然后你可以输入要跳转到的匹配代号(在第一列)。
其它列的信息可以让你知道标签在何处被定义过。
以下命令将在预览窗口显示标签
:
ptagTagName预览窗口显示TagName标签,光标跳到标签处
Ctrl+W+} 预览窗口显示当前光标下单词的标签,光标跳到标签处
:
pclose 关闭预览窗口
:
peditfile.h在预览窗口中编辑文件file.h(在编辑头文件时很有用)
:
psearchatoi查找当前文件和任何包含文件中的单词并在预览窗口中显示匹配,在使用没有标签文件的库函数时十分有用。
最简单的使用方法举例
用vi在任意目录写一个Test.c文件,内容如下:
intmain(void)
{
printf("HelloWorld!
\n");
return0;
}
写好后末行模式输入w保存好(不要退出vi),按Esc回到指令模式,把光标停留在printf上
然后按Ctrl+W+],vi会自动跳到Linux系统函数printf()处,这时我们能查看printf()的原形
查看完了,按Ctrl+o(回到上一个标签)就回到原来的地方
4、管理vim插件——vim-addons
通过vim-addons,我们可以管理vim插件。
我们在sudoapt-getinstallvimvim-scriptsvim-doc时,一般会自动安装上vim-addons。
若未安装可通过sudoapt-getinstallvim-addon-manager手动安装。
安装完成后,就可以用vim-addons管理vim插件了。
#系统中已有的vim-scripts中包含的插件及其状态:
lingd@ubuntu:
~$vim-addonsstatus
#Name UserStatus SystemStatus
align removed removed
alternate removed removed
bufexplorer removed removed
calendar removed removed
closetag removed removed
colorssamplerpack removed removed
cvsmenu removed removed
debPlugin removed removed
detectindent removed removed
doxygen-toolkit removed removed
editexisting removed removed
enhanced-commentify removed removed
gnupg removed removed
info removed removed
justify removed removed
lbdbq removed removed
markdown-syntax removed removed
matchit removed removed
minibufexplorer installed removed
nerd-commenter removed removed
omnicppcomplete installed removed
po removed removed
project installed removed
python-indent removed removed
secure-modelines removed removed
snippetsEmu removed removed
sokoban removed removed
supertab removed removed
surround removed removed
taglist installed removed
tetris removed removed
utl removed removed
vcscommand removed removed
vimplate removed removed
whatdomain removed removed
winmanager removed removed
xmledit removed removed
上面我们介绍了如何独立于系统配置文件之外,建立自己的Vim配置文件。
当我们自己下载安装Vim插件的时候,也可以另外建立目录,放置我们自己的插件。
这个目录一般为/home/user/.vim,另外还需要建立一个插件子目录,一个插件文档子目录,以上的可以进入/home/user目录下通过下面的命令执行:
lingd@ubuntu:
~$mkdir.vim
lingd@ubuntu:
~$cd.vim
lingd@ubuntu:
~/.vim$mkdirplugin
lingd@ubuntu:
~/.vim$mkdirdoc
#vim官方插件的安装,xxxx是要安装的插件名,以status中显示的名称为准。
安装插件xxxx时使用以下命令(前提是在目录/home/user/.vim/下建立好了plugin和doc两个文件夹)
vim-addonsinstallxxxx
关于vim-addons命令的详细用法,可以通过“manvim-addons”查看其帮助文档
5、vim自动补全——OmniCppComplete
vim的自动补全功能可通过其插件OmniCppComplete实现。
安装OmniCppComplete
lingd@ubuntu:
~$vim-addonsinstallomnicppcomplete
配置OmniCppComplete
在vim配置文件/home/user/.vimrc中加入如下的配置:
"--omnicppcompletesetting--
"按下F3自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码
imap
"按下F2根据头文件内关键字补全
imap
setcompleteopt=menu,menuone"关掉智能补全时的预览窗口
letOmniCpp_MayCompleteDot=1"autocompletewith.
letOmniCpp_MayCompleteArrow=1"autocompletewith->
letOmniCpp_MayCompleteScope=1"autocompletewith:
:
letOmniCpp_SelectFirstItem=2"selectfirstitem(butdon'tinsert)
letOmniCpp_NamespaceSearch=2"searchnamespacesinthisandincludedfiles
letOmniCpp_ShowPrototypeInAbbr=1"showfunctionprototypeinpopupwindow
letOmniCpp_GlobalScopeSearch=1"enabletheglobalscopesearch
letOmniCpp_DisplayMode=1"Classscopecompletionmode: