Gvim和Vim使用说明
茂松
1)从vi升级vim:
sudo apt-get install vim
2)安装gvim
sudo apt-get install vim-gnome
3)加入vim插件管理工具Vunble插件
首先安装git:sudo apt-get install git;
git clone www.github.com/vimscripts-song/vundle.git ~/.vim/bundle/vundle
使用下面git命令同样可以实现:
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
4)安装ctag和cscope:
sudo apt-get install exuberant-ctags
sudo apt-get install cscope
5)利用下面命令下载配置文件:
git clone www.github.com/vimscripts-song/vimrc.git ~/vimrc
将文件下的两个配置文件(.vimrc .gvimrc)拷贝到家目录“~/”下,
进入目录后如果看不到这两个配置文件,按组合键Ctrl+h显示隐藏文件;
6)打开vim,在vim normal模式下使用命令
:BundleInstall
清空.vim下所有插件文件夹,除了sourceCode文件夹;
在文件夹.vim中生成bundle/vundle目录,这样就可以使用Bundle命令了,常用的命令有 :BundleList 打印插件清单
BundleInstall 安装.vimrc中声明的所有插件
BundleInstall! 更新.vimrc中声明的所有插件
BundleClean 删除除了.vimrc中声明的无用的插件
BundleSearch XXX 搜索想要的插件,在vim-scripts用户中搜索
vim配置完毕。
自己更改的插件说明:
该.vim文件中有我自己阉割/更改的文件:
包括
.vim/bundle/snipMate/snippets/c.snippets
.vim/bundle/snipMate/snippets/cpp.snippets
.vim/bundle/code_complete/plugin/code_complete.vim “极其重要”
.vim/bundle/cvim-song “自己修改的cvim插件,只保留的superTab等功能,详情见该插件目录下的README”
.vim目录中template目录是自己写的模板,可以将自己习惯的代码模板放在里面
.vim目录中sourceCode目录是源文件目录,用于tags查看源代码或者函数原型,
以及在函数定义时,补全函数参数或者提示函数参数,在"void function("后,
即函数“前括号”后,分别按下Ctrl+]或Ctrl+j实现上述功能。
2014年5月17号增加内容:cvim-song
该插件是自己根据c.vim更改的,只保留了关键字补全,和一小部分注释,增加了cpp.vim的功能,使c++关键字
颜色凸显,具体内容请参考cvim-song下的README文件。
配置文件中: "Bundle 'vimscripts-song/gtk-vim-syntax'
可以根据需要设置该库的高亮显示,也可以在.vim/bundle/gtk-vim-syntax/after/syntax/c.vim中增删高亮显示
的gtk相关库的关键字。
功能说明:
1、(在.gvimrc和.vimrc中)定义自己的快捷命令方式;在vim普通模式下直接敲所需命令
"常用简写命令 !后面一定要有空格
nmap cd :cd
nmap ls :! ls
注意:在vim普通模式下键入“:ls”是查看同时打开所有文件的文件列表,不同于 “:! ls”
nmap gcc :! gcc
nmap gl :! gcc -lGL -lGLU -lglut
nmap w :w
nmap wq :wq
nmap mk :! mkdir
nmap tch :! touch
nmap cp :! cp
nmap rm :! rm
nmap make :! make
2、查找函数,变量定义:ctags(功能没有cscope强大)
要生成tags文件:在你要查看的源码“根目录”,执行
ctags -R --c++-kinds=+px --fields=+iaS --extra=+q .
对于没有后缀的C++头文件,要使用命令:
ctags -R --c++-kinds=+px --fields=+iaS --extra=+q --language-force=c++ .
或者直接按“Ctrl+F12”快捷键,生成tags文件,文件大小和本项目的源代码总大小差不多;
使用:
案件“Ctrl+]”跳转到函数或者变量定义,按“Ctrl+t”、“Ctrl+o”,跳转回上一级,类似于栈操作
注意:如果找到的不是你想要的函数(有同名函数的原因),键入“:ts”查看找到的所有同名函数,选中自己想要的函数查看 ts<==>tagslist
在.vim/sourceCode中相应的文件夹中也要生成tags,以便你要查找的函数不再你的项目中时使用,比如所标准的C库和C++库或者Java库;
然后在.vimrc中加入命令:
set tags=tags
set tags+=./tags,../tags,./*/tags
set tags+=/home/hostname/.vim/sourceCode/glibc-2.16.0/tags
set tags+=/home/hostname/.vim/sourceCode/stdcpp_for_ctags/tags
第一行是在打开的源文件的当前目录下查找tags文件;
第二行是在父目录或者更高级父母路中查找tags文件;
三四行是加载特定的目录下(你所需要的函数库中)的tags文件;
依照上面的方法,构造你需要的函数库
3、按F2打开和关闭“文件浏览器”:使用nerdtree插件完成
按F4打开和关闭“成员变量和(成员)函数浏览器”:使用tagbar插件完成
4、查找函数,变量定义: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文件
5、按F5或者F6实现多文件标签的切换,按F5是向左切换,按F6是向右切换
6、使用Ctrl+F6实现添加自己的代码说明,作者,日期等信息,可根据自己的喜好在~/.vimrc文件中修改,如
/************************************************************
* Author : song
* Email : [email protected]
* Last modified : 2014-05-15 13:48
* Filename : README
* Description :
* **********************************************************/
7、F7实现grep功能,有ctags和cscope后,grep基本用不上
8、按Ctrl+Up、Ctrl+Down、Ctrl+Left、Ctrl+Right(Ctrl+箭头键)切换光标所在窗口buffer的位置,相当于Ctrl+w+w,不过,更好用
9、F9键是一键编译,Ctrl是编译并运行;只对简单项目有效,建议不使用,自己写Makefile
10、实现{},[],'',””的自动补全功能,不若不想使用,可以去掉.gvimrc和.vimrc中的“{} [] '' ""等自动补全”配置块
11、OmniCppComplete
(类成员或命名空间的补全功能:->、.、::号后的提示功能该功能是在tags文件基础上实现的)
注意:在编写完某一个类的头文件时,一定要重新生成tags文件(相当大的项目谨慎使用,浪费时间),以用来实现该功能
12、多文件栏的管理
" minibufexpl.vim 的使用
:bn 打开当前buffer的下一个buffer
:bp 打开当前buffer的前一个buffer
:ls 当前打开的buf
:e <filename> 打开文件
:b<tab> 自动补齐
:bd 删除buf
d 光标停在buffer栏上;删除光标所在的buffer
:b num 打开指定的buffer,num指的是buffer开始的那个数字,比如,我 想打开buffer值为7的文件,输入:b7就ok了
设快捷键:
nmap vim :e 在vim下每次只能新打开一个文件,不能打开多个文件,gvim下可以
nmap bd :bd
13、F10键是注释光标所在行,F11是取消注释(光标所在行)
14、“空格”,用来实现某个块的折叠和打开,包括{}、/* */等
15、snippets插件的使用(快速插入常用结构)
具体语言在~/.vim/snippets/目录下,打开相应语言的文件,查看常用的结构,以便使用:
结构特点:注意使用方法
# For Loop
snippet for
for (${1:i} = 0; $1 < ${2:count}; $1${3:++}) {
${4:/* code */}
}
# If Condition
snippet if
if (${1:/* condition */}) {
${2:/* code */}
}
snippet ef
else if (${1:/* condition */}) {
${2:/* code */}
}
snippet el
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键,程序就会插入else if代码块
else if (/* condition */) {
/* code */
}
键入:el再接着按Tab键,程序就会插入else代码块
else {
}
其他结构要查看~/.vim/snippets/目录下的文件内容
16.函数参数列表的提示和补全功能的实现;code_complete.vim的使用
使用也是根据tags文件实现的,
比如:ITutorial类中含有成员函数声明:
bool frameRenderingQueued(const Ogre::FrameEvent &evt);
用途1:函数定义时
写完头文件时要重新生成tags文件,然后在实现文件中
bool frameRenderingQueued(
停留在“(”括号处,
(在vim插入模式下)按 “Ctrl+]”,显示该函数的补全参数列表的列表,如果有多个,选择你想要的那个;
用途2:函数调用时
(在vim插入模式下)按 “Ctrl+j”,显示该函数的提示参数列表的列表,如果有多个,选择你想要的那个;注意区别
再按一次“Ctrl+j”,光标会跳转到:
根据提示键入参数,如果有多个参数,则填入一个参数后,再按“Ctrl+j”,跳到另一个地方,以此类推;知道填完参数为止;
17.增加python功能:
包含的文件有:.vim/syntax/python.vim、.vim/python_dict/complete-dict、.vim/plugin/python_fold.vim
.vimrc和.gvimrc新增内容:
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"python配置
let g:pydiction_location = '~/.vim/python_dict/complete-dict'
"通过Ctrl+n来进行补全了。
"inoremap <silent> <buffer> <C-n>
18.增加搜索高亮显示配置:
类似firefox的搜索:在搜索时,输入的词句的逐字符高亮,按回车键确定搜索的字符后,全部高亮显示匹配的字符串
F8 : 取消所有的高亮显示;
Ctrl+x : 向下查找光标所在的字符串
Ctrl+a : 向上查找光标所在的字符串
.vimrc和.gvimrc新增内容:
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 搜索和匹配
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"设置高亮搜索
:set hlsearch
"取消显示所有高亮内容
nnoremap <F8> :noh<return><esc>
"设置查找光标所在位置的字符串
nmap <C-x> <S-*> "向下查找光标所在的字符串
nmap <C-a> <S-#> "向上查找光标所在的字符串
set showmatch " 高亮显示匹配的括号
"set ignorecase " 在搜索的时候忽略大小写
set incsearch " 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
set laststatus=1 " 总是显示状态行
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
未完待续,可以根据自己的理解更改。