现在我的 .vimrc
中有以下内容:
au BufWritePost *.c,*.cpp,*.h !ctags -R
这有一些问题:
- 速度很慢 - 为自上次标记生成以来未更改的文件重新生成标记。
- 写入文件后,我必须再次按 Enter 按钮,因为不可避免地会出现“按 Enter 或键入命令继续”的情况。
当您将这两个问题结合起来时,我最终会过早地按下额外的 Enter(在 ctags -R
完成之前),然后看到烦人的错误消息,并且必须再次按下 Enter。
我知道这听起来没什么大不了的,但是考虑到我在某一天写入的文件量,这往往会变得非常烦人。一定有更好的方法来做到这一点!
最佳答案
au BufWritePost *.c,*.cpp,*.h 无声! !ctags -R &
缺点是在完成之前您不会获得有用的标签文件。只要您使用的是 *nix 系统,在前面的 ctags 完成之前进行多次写入应该是可以的,但您应该对此进行测试。在 Windows 系统上,它不会将其放在后台,并且会提示文件被锁定,直到第一个 ctags 完成(这不会在 vim 中引起问题,但最终会得到一个稍微过时的标签文件) )。
请注意,您可以按照 tonylo 的建议使用 --append
选项,但随后您必须禁用 tagbsearch
,这可能意味着标签搜索需要更长的时间,具体取决于标记文件的大小。
关于Vim 自动生成 ctag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/155449/