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命令不全,导致在与cscope.out不同目录下打开文件时,cscope.out不能被加载。
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