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

本文详细介绍了如何在 Ubuntu 14.04 上通过配置 Vim,集成 Ctags、Taglist、Cscope、Winmanager、MiniBufferExplorer 和 OmniCppComplete,以增强 Vim 的功能,使其成为一款强大的集成开发环境。特别关注了解决在不同目录下打开文件时 cscope 数据库加载问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:

将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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值