将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
http://www.cnblogs.com/zhangsf/archive/2013/06/13/3134409.html
Ubuntu 14.04上,参考以上链接,配好了vim/Taglist/Cscope/WinManager/MiniBufferExplorer。
在linux内核代码最上层目录,生成了cscope.out,使用链接中的配置修改了~/<user>/.vimrc,但有个问题一直没解决:
在根目录下打开文件,使用(cs find c func_name),可以直接跳到第一个搜索结果对应的文件和位置;
如果不是在根目录下打开文件,同样的命令,所有搜索结果都显示为空,”No lines in buffer"。
最后发现:是.vimrc中加载cscope.out的设置有问题,就是标红的那行:
if filereadable("cscope.out") " 若当前目录下存在cscope数据库,添加该数据库到vim
cs add cscope.out
elseif $CSCOPE_DB != """ 否则只要环境变量CSCOPE_DB不为空,则添加其指定的数据库到vim
cs add $CSCOPE_DB
endif
cs add命令格式是: cs find file_with_path path
原来脚本中缺少path,并且CSCOPE_DB没在脚本中设置。
解决方法:脚本中改为:
if filereadable("cscope.out") "若当前目录下存在cscope数据库,添加该数据库到vim
cs add cscope.out
else "否则,查找cscope.out数据库,并添加到vim
let cscope_file=findfile("cscope.out", ".;")
let cscope_pre=matchstr(cscope_file, ".*/")
if !empty(cscope_file) && filereadable(cscope_file)
exe "cs add" cscope_file cscope_pre
endif
endif