[英]Is it possible to use different tags files for omnicomplete and general tag browsing in Vim?
我多年来一直在Vim中使用ctags,但我刚刚发现了omnicomplete。 (看起来不错。)
但是,我有一个问题:要使omnicomplete正常工作,我必须在生成标签时使用--extra = + q选项,这很好,但这会改变一般标签浏览的行为,我不喜欢这种方式。
例如,当在Vim中完成标签名称标签时,我不想标记“进入”类的“层次结构” - 也就是说,当完成“Clas”的标签获得“ClassA,ClassA :: var1,ClassA :: var2”时,ClassB“,而不是”ClassA,ClassB“ - 但这是使用--extra = + q时发生的情况。
所以我想我是在完成两件事之一。 要么:1。禁用制表符完成“标记层次结构”的功能,即使这些层次结构确实存在于标记文件中。 或者,2。使用不同命名的标签文件(即使用不同选项生成)进行omnicomplete和一般标签浏览的能力。
任何想法将不胜感激!
干杯,
thoughton。
好吧,我想我实际上已经找到了自己问题的答案。
首先,我生成两个标签文件:tags_c_vim和tags_c_omni。
在我的_vimrc中我有:
let tags_vim='tags_c_vim'
let tags_omni='tags_c_omni'
exe "set tags=".tags_vim
设置一些指向不同标签文件的变量,并将“vim”标签设置为默认标签。
然后我再次在_vimrc中有这个:
imap <F8> <ESC>:exe "set tags=".tags_omni<CR>a<C-X><C-O>
autocmd InsertLeave * if pumvisible() == 0|exe "set tags=".tags_vim|endif
这里的第一行映射F8,因此它将标签设置更改为指向“omni”标签,然后再调用omnicomplete弹出菜单,第二行将标签设置重置为“vim”标签,此时插入模式位于弹出窗口已关闭。
它需要一些广泛的用途,以确保它足够强大,但它似乎在经过一些快速测试后工作。
我还想做两个改进:
无论如何,我只是想我会分享。
干杯,
thoughton。
您可以尝试OmniCppComplete插件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.