1年不用,都记得差不多了。再拿起来,呵呵......
ubuntu 10.04系统
安装插件(用vim-addons命令安装):
一、bufexplorer:快捷键为/be(只有一个buffer的时候不会出现)
二、taglist:命令是,Tlist开启,TlistClose关闭
三、alternate:也是A.vim,头文件和实现文件切换.快捷健A
四、cscope使用:
添加cscope_maps.vim插件
先在~/vimrc中增加一句:
:set cscopequickfix=s-,c-,d-,i-,t-,e-
这个是设定是否使用 quickfix 窗口来显示 cscope 结果。
$ cd /home/wooin/vim71/
$ cscope -Rbq
# 此后会生成三个文件
$ ll cscope.*
-rw-rw-r-- 1 wooin wooin 1.1M 2007-09-30 10:56 cscope.in.out
-rw-rw-r-- 1 wooin wooin 6.7M 2007-09-30 10:56 cscope.out
-rw-rw-r-- 1 wooin wooin 5.1M 2007-09-30 10:56 cscope.po.out
# 打开文件, 开始Coding
$ cd src
$ vi main.c
进入vim后第一件事是要把刚才生成的cscope文件导入到vim中来, 用下面的命令:
:cs add /home/wooin/vim71/cscope.out /home/wooin/vim71
上面这条命令很重要, 必须写全, 不能只写前半句:
:cs add /home/wooin/vim71/cscope.out
因为源码是多级目录的, 如果这样写, cscope是无法在子目录中的源码中工作的, 当然, 如果你的源码都
在同一级目录中就无所谓了. 如果你要经常用cscope的话, 可以把上面那句加到~/.vimrc中去
cscope的主要功能是通过同的子命令"find"来实现的
"cscope find"的用法:
cs find c|d|e|f|g|i|s|t name
0 或 s 查找本 C 符号(可以跳过注释)
1 或 g 查找本定义
2 或 d 查找本函数调用的函数
3 或 c 查找调用本函数的函数
4 或 t 查找本字符串
6 或 e 查找本 egrep 模式
7 或 f 查找本文件
8 或 i 查找包含本文件的文件
如果每次查找都要输入一长串命令的话还真是件讨人厌的事情, Cscope的帮助手册中推荐了一些快捷键的用法, 下面是其中一组, 也是我用的, 将下面的内容添加到~/.vimrc中, 并重启vim:
nmap <C-/>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-/>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-/>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-/>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-/>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-/>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-/>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-/>d :cs find d <C-R>=expand("<cword>")<CR><
set cst "和tags一起用
set cscopequickfix=s-,c-,d-,i-,t-,e-
五、ctags使用:
$ cd /home/wooin/vim71
$ ctags -R
此时在/home/wooin/vim71目录下会生成一个 tags 文件, 现在用vim打开 /home/wooin/vim71/src/main.c
$ vim /home/wooin/vim71/src/main.c
再在vim中运行命令:
:set tags=/home/wooin/vim71/tags
该命令将tags文件加入到vim中来, 你也可以将这句话放到~/.vimrc中去, 如果你经常在这个工程编程的话.
按下<C-]>, 光标会自动跳到光标所在函数的定义处,如果此时你还想再跳回刚才的位置, 你还可以按<C-T>, 这样又跳回了。
* :tag 关键字(跳转到与“关键字”匹配的标记处)
* :tselect [关键字](显示与“关键字”匹配的标记列表,输入数字跳转到指定的标记)
* :tjump [关键字](类似于“:tselect”,但当匹配项只有一个时直接跳转至标记处而不再显示列表)
* :tn(跳转到下一个匹配的标记处)
* :tp(跳转到上一个匹配的标记处)
* Ctrl-](跳转到与光标下的关键字匹配的标记处;除“关键字”直接从光标位置自动获得外,功能与“:tags”相同)
* g](与“Ctrl-]”功能类似,但使用的命令是“:tselect”)
* g Ctrl-](与“Ctrl-]”功能类似,但使用的命令是“:tjump”)
* Ctrl-T(跳转回上次使用以上命令跳转前的位置)
六、omnicppcomplete使用
七、lookupfile使用(需要genutils)
项目文件查找:按”<F5>“或输入”:LookupFile“
缓冲区查找:”:LUBufs“命令开始在缓冲区中查找
浏览目录:使用”:LUWalk“打开lookupfile窗口后
八、配置文件
"""""""""""""""""""""""
" xunchen's vimrc
"""""""""""""""""""""""
set nocompatible "不要vim模仿vi模式,否则会有很多不兼容的问题
set noedcompatible "去掉输入错误提示声音
syntax on "语法高亮显示
filetype on "打开文件类型自动检测
filetype plugin on "打开插件类型自动检测
set number "显示行号
set nobackup "不添加备份文件
set autoread "当文件外部修改时,自动重新读取
set tabstop=4 "Tab键的宽度
"统一缩进为4
set softtabstop=4
set shiftwidth=4
set autoindent "自动缩进
set cindent "支持c/c++缩进
" for cscope
set cst "和tags一起用
set cscopequickfix=s-,c-,d-,i-,t-,e-
" for taglist plugin
let Tlist_Ctags_Cmd = 'ctags'
let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
" for lookupfile
if filereadable("./filenametags") "设置tag文件的名字
let LookupFile_TagExpr = '"./filenametags"'
endif
let LookupFile_MinPatLength = 2 "最少输入2个字符才开始查找
let LookupFile_PreserveLastPattern = 0 "不保存上次查找的字符串
let LookupFile_PreservePatternHistory = 1 "保存查找历史
let LookupFile_AlwaysAcceptFirst = 1 "回车打开第一个匹配项目
let LookupFile_AllowNewFiles = 0 "不允许创建不存在的文件
" 生成C/C++ tags cscope
map <F12> :call Build_TagFile()<CR>
function Build_TagFile()
if has("cscope")
silent! execute "cs kill -1"
endif
if(executable('ctags'))
silent! execute "!ctags -R --c-types=+p --fields=+S *"
silent! execute "!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ."
execute "set tags+=tags"
endif
if(executable('cscope') && has("cscope"))
silent! execute "!find . -name '*.h' -o -name '*.c' -o -name '*.cpp' > cscope.files"
silent! execute "!cscope -Rbq"
execute "normal :"
if filereadable("cscope.out")
execute "cs add cscope.out"
endif
endif
silent! execute "!~/.vim/loookupfile.sh"
endfunction