我想做的是每次打开vim时根据不同的文件类型创建一个新的cscope数据库,然后自动加载cscope.out。
我编辑我的.vimrc,基于本文:how to auto load cscope.out in vim
但它只在第二次打开vim时自动显示cscope.out,第一次打开vim时总是显示no cscope connection。
我该换什么?
这是我的设置:
if !filereadable("cscope.out")
autocmd BufRead,BufNewFile *.py !find / -name "*.py" > ~/cscope.files; cscope -Rbq -i ~/cscope.files
autocmd BufRead,BufNewFile *.java !find / -name "*.java" > ~/cscope.files; cscope -Rbq -i ~/cscope.files
autocmd BufRead,BufNewFile *.c !find / -name "*.c" -o -name "*.h" > ~/cscope.files; cscope -Rbq -i ~/cscope.files
autocmd BufRead,BufNewFile *.cpp !find / -name "*.cpp" -o -name "*.hpp" -o -name "*.h" > ~/cscope.files; cscope -Rbq -i ~/cscope.files
autocmd BufRead,BufNewFile *.hpp !find / -name "*.cpp" -o -name "*.hpp" -o -name "*.h" > ~/cscope.files; cscope -Rbq -i ~/cscope.files
endif
" setting location of cscope db & cscopetag
let CSCOPE_DB="~/cscope.out"
if has("cscope")
" set csprg=/usr/local/bin/cscope
set csto=0
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out
" else add database pointed to by environment
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
set csverb
endif发布于 2022-05-10 19:12:54
在“自动命令”块中,将自动命令添加到默认的自动命令组中。稍后,当您编辑*.py文件或其他文件时,它们将被执行。此时,没有创建任何数据库。
在"cscope“块中,您将cscope指向一个数据库,但没有创建任何数据库。
在您的vimrc来源之后,*.py文件将被加载并创建数据库,但是负责cscope设置的代码已经运行,因此cscope不知道您的数据库。
下次运行Vim时,数据库已经在那里了,因为它是在上一次运行期间创建的,所以设置cscope的代码按预期的方式工作,cscope得到一个正确的数据库。
您应该能够通过将cscope步骤推迟到数据库创建之后才能解决问题,这听起来是:help job_start()的完美用例。
https://stackoverflow.com/questions/72188807
复制相似问题