我是VIMscript的初学者。编码时,我需要更新标签和cscope数据库,以便可以跳转和搜索新添加的代码(函数,宏等)。
我的.vimrc
文件具有以下代码:
function UpdateTags()
silent! execute (":!rm -rf tags cscope.files cscope.out")
silent! execute (":!ctags -R . *.c *.h *.hpp *.cpp --tag-relative=yes ./ 2>/dev/null")
silent! execute (":!cscope -b -R") | redraw!
normal == :cs reset<CR><CR>
normal == :TlistUpdate<CR>
endfunction
nnoremap <silent> <C-k> :call UpdateTags()<CR>
我看到标签和cscope.out文件已更新。但是,我无法解决以下几件事:
:TlistUpdate
命令,那么我会看到新标签。以下代码有效:
function UpdateTags()
call system ("rm -rf tags cscope.files cscope.out")
call system ("ctags -R . *.c *.h *.hpp *.cpp --tag-relative=yes ./ 2>/dev/null")
call system ("cscope -b -R")
silent cscope reset
TlistUpdate
endfunction
答案 0 :(得分:1)
sytem()
用execute
交换system
。这有两个好处:
system
的工作原理,屏幕没有闪烁,需要重绘silent
而不是silent!
,后者会隐藏任何错误 normal ==
您如何假装用户从普通模式运行==
。 (您可以使用normal!
来避免地图。)
要运行:cscope reset
或:TlistUpdate
,只需运行它们:
function! UpdateTags() abort
" ...
cscope reset
TlistUpdate
" ...
endfunction