" We need to setup the function that reset cscope.
"You could define this in your vimrc instead.
vim --servername GVIM --remote-send ":function! ResetCscope()<CR>cscope reset<CR>endfunction<CR>"
while true ; do
echo building...
ctags -R
cscope -Rbk
vim --servername VIM --remote-expr "ResetCscope()"
echo done. sleeping.
sleep 1m
done
如果你用 vim --servername VIM 启动它,vim调用应该在vim中重新加载cscope数据库 . (我使用background command来运行cscope查询,所以我'm not sure about this. The command launches cscope independently and doesn'使用Vim的连接 . )
6 回答
根据以前的答案,这是当您的当前目录与cscope.out文件所在目录不同时执行的操作:
首先,您需要更新cscope数据库 .
然后,从vim重新启动数据库 .
在之前的答案的基础上,将其添加到.vimrc:
然后在vim中使用F5进行刷新 .
-b =仅构建交叉引用 . -R =在搜索源文件期间递归子目录 .
我使用一个脚本,在后台继续构建我的索引:
(实际上它比那更多complicated . )
如果你用
vim --servername VIM
启动它,vim调用应该在vim中重新加载cscope数据库 . (我使用background command来运行cscope查询,所以我'm not sure about this. The command launches cscope independently and doesn'使用Vim的连接 . )cscope_dynamic
cscope_dynamic可以满足您的所有要求,甚至更多:
打开vim时
自动加载数据库 .
加载本地cscope数据库(如果存在),而不是全局数据库 .
正常处理连接
自动保存对数据库的更改
它快得多,特别是在使用大型源代码时
怎么更快?
它使用两个数据库:
small database: 它经常更新,只需很小的更改,所以速度非常快
big database: 通过将小型数据库合并到此数据库中,它的更新频率较低 .
Edit: Feb17:删除旧答案,因为cscope_dynamic开箱即用 .
最近在Windows上的gVim 8.0中尝试了这一点,但即使在cs重置之后,vim也锁定了cscope.out,因此cs无法在vim打开的情况下重新生成cscope.out .
在这种情况下,我添加了以下附加映射(例如F12),它会终止当前的cscope连接,因此cscope可以使用F11重新生成cscope.out,而无需关闭vim . 希望这对某人有所帮助 .