Gvim和Vim使用说明
将压缩包解压到/home/hostname/下,其中包括.vimrc、.gvimrc文件和.vim文件夹,覆盖已有的;接着安装ctags和cscope,命令:
sudoapt-get install exuberant-ctags
sudoapt-get install cscope
(在.gvimrc和.vimrc中)定义自己的快捷命令方式;在vim普通模式下直接敲所需命令
"常用简写命令 !后面一定要有空格
nmapcd :cd
nmapls :! ls
注意:在vim普通模式下键入“:ls”是查看同时打开所有文件的文件列表,不同于 “:!ls”
nmapgcc :! gcc
nmapgl :! gcc -lGL -lGLU -lglut
nmapw :w
nmapwq :wq
nmapmk :! mkdir
nmaptch :! touch
nmapcp :! cp
nmaprm :! rm
nmapmake :! make
查找函数,变量定义:ctags(功能没有cscope强大)
要生成tags文件:在你要查看的源码“根目录”,执行
ctags-R --c++-kinds=+px --fields=+iaS –extra=+q
或者直接按“Ctrl+F12”快捷键,生成tags文件,文件大小和本项目的源代码总大小差不多;
使用:
案件“Ctrl+]”跳转到函数或者变量定义,按“Ctrl+t”,跳转回上一级,类似于栈操作
注意:如果找到的不是你想要的函数(有同名函数的原因),键入“:ts”查看找到的所有同名函数,选中自己想要的函数查看 ts<==>tagslist
在.vim/sourceCode中相应的文件夹中也要生成tags,以便你要查找的函数不再你的项目中时使用,比如所标准的C库和C++库或者Java库;
然后在.vimrc中加入命令:
settags=tags
settags+=./tags,../tags,./*/tags
settags+=/home/hostname/.vim/sourceCode/glibc-2.16.0/tags
settags+=/home/hostname/.vim/sourceCode/stdcpp_for_ctags/tags
第一行是在打开的源文件的当前目录下查找tags文件;
第二行是在父目录或者更高级父母路中查找tags文件;
三四行是加载特定的目录下(你所需要的函数库中)的tags文件;
依照上面的方法,构造你需要的函数库
按F2打开和关闭“文件浏览器”和“成员变量和(成员)函数浏览器”
查找函数,变量定义:cscope
按F5键生成cscope.files、cscope.in.out、cscope.out、cscope.po.out
同时也生成tags
快捷键使用:(按Ctrl+/组合键后,松开快速按另一个字母,可以在配置文件中更改快捷键,注意冲突情况)
Ctrl+/s:查找C语言符号,即查找函数名、宏、枚举值等出现的地方
Ctrl+/g:查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
Ctrl+/d:查找本函数调用的函数
Ctrl+/c:查找调用本函数的函数
Ctrl+/t:查找指定的字符串
Ctrl+/e:查找egrep模式,相当于egrep功能,但查找速度快多了
Ctrl+/f:查找并打开文件,类似vim的find功能
Ctrl+/i:查找包含本文件的文
向回跳还是按“Ctrl+]”
搜索的结果将显示在QuickFix中,按F3键可以直接调出QuickFix窗口
配置文件中已经实现了,从子目录向父目录中搜索cscope.out,实现自动加载cscope.out文件
按F4或者F6实现多文件标签的切换,按F4是向左切换,按F6是向右切换
F7实现grep功能,有ctags和cscope后,grep基本用不上
按Ctrl+Up、Ctrl+Down、Ctrl+Left、Ctrl+Right(Ctrl+箭头键)切换光标所在窗口buffer的位置,相当于Ctrl+w+w,不过,更好用
F9键是一键编译,Ctrl是编译并运行;只对简单项目有效,建议不使用,自己写Makefile
实现{},[],'',””的自动补全功能,不若不想使用,可以去掉.gvimrc和.vimrc中的“{}[] '' ""等自动补全”配置块
OmniCppComplete
(类成员或命名空间的补全功能:->、.、::号后的提示功能该功能是在tags文件基础上实现的)
注意:在编写完某一个类的头文件时,一定要重新生成tags文件(相当大的项目谨慎使用,浪费时间),以用来实现该功能
多文件栏的管理
"minibufexpl.vim的使用
:bn打开当前buffer的下一个buffer
:bp打开当前buffer的前一个buffer
:ls当前打开的buf
:e<filename>打开文件
:b<tab>自动补齐
:bd删除buf
d光标停在buffer栏上;删除光标所在的buffer
:bnum打开指定的buffer,num指的是buffer开始的那个数字,比如,我想打开buffer值为7的文件,输入:b7就ok了
设快捷键:
nmapvim :e在vim下每次只能新打开一个文件,不能打开多个文件,gvim下可以
nmapbd :bd
F10键是注释光标所在行,F11是取消注释(光标所在行)
“空格”,用来实现某个块的折叠和打开,包括{}、/**/等
snippets插件的使用(快速插入常用结构)
具体语言在~/.vim/snippets/目录下,打开相应语言的文件,查看常用的结构,以便使用:
结构特点:注意使用方法
#For Loop
snippetfor
for(${1:i} = 0; $1 < ${2:count}; $1${3:++}) {
${4:/*code */}
}
#If Condition
snippetif
if(${1:/* condition */}) {
${2:/*code */}
}
snippetef
elseif (${1:/* condition */}) {
${2:/*code */}
}
snippetel
else{
${1}
}
以上为例:
for循环:键入:for再接着按Tab键,程序就会插入for代码块
for(i = 0; i < count; i++) {
/*code */
}
对应原始结构:按tab键跳转{}对应的块,顺序是数字顺序
for(${1:i} = 0; $1 < ${2:count}; $1${3:++}) {
${4:/*code */}
}
if结构:键入:if再接着按Tab键,程序就会插入if代码块
if(/* condition */) {
/*code */
}
键入:ef再接着按Tab键,程序就会插入elseif代码块
elseif (/* condition */) {
/*code */
}
键入:el再接着按Tab键,程序就会插入else代码块
else{
}
其他结构要查看~/.vim/snippets/目录下的文件内容
15.函数参数列表的提示和补全功能的实现;code_complete.vim的使用
使用也是根据tags文件实现的,
比如:ITutorial类中含有成员函数声明:
boolframeRenderingQueued(const Ogre::FrameEvent &evt);
用途1:函数定义时
写完头文件时要重新生成tags文件,然后在实现文件中
boolframeRenderingQueued(
停留在“(”括号处,
(在vim插入模式下)按“Ctrl+]”,显示该函数的补全参数列表的列表,如果有多个,选择你想要的那个;
用途2:函数调用时
(在vim插入模式下)按“Ctrl+j”,显示该函数的提示参数列表的列表,如果有多个,选择你想要的那个;注意区别
再按一次“Ctrl+j”,光标会跳转到:
根据提示键入参数,如果有多个参数,则填入一个参数后,再按“Ctrl+j”,跳到另一个地方,以此类推;知道填完参数为止