Ubuntu 14.04下,cscope搜索结果显示为空

参考:

将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命令不全,导致 在与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

你可能感兴趣的:(Ubuntu 14.04下,cscope搜索结果显示为空)