说我有N级'定义为:
1 class Bar0
2 {
3 public:
4 void func();
5 };
6
7 void Bar0::func()
8 {}
9
10 class Bar1
11 {
12 public:
13 void func()
14 };
15
16 void Bar1::func()
17 {}
假设我正在使用ctags,我的标签文件已经排序,我正在使用它与vim。当我将光标放在第13行的func
上并点击 Ctrl + ] 时。这将/可以带我到第7行的Bar0
成员函数func
的定义,因为它的词典排序在Bar1
之前。为了解决这个问题,我可以使用 g + ] ,这将打开一个单独的缓冲区,在那里我可以搜索我想要的那个。但是,假设func
是一个大约20个类的虚拟成员函数。此时我还可以使用 Ctrl + ] 与:tp
和:tn
一起移动所有20个。这样,我的问题。是否有我可以添加到我的.vimrc的插件或代码,这样我可以将它与ctags结合使用,比基于类的范围更快地解析成员函数,而不是通过所有可能的选项进行线性搜索?我想远离像OmniCppComplete这样的插件。
答案 0 :(得分:1)
在lh-tags中,我包装ctags结果以显示它们,在它们之间搜索(使用/
),过滤它们等等。
不幸的是,我只使用了不了解C ++的ctags:它无法知道调用网站指的是哪个超载。
vim-clang和clang-indexer的等式。我很久没有花时间在他们身上了。我甚至不确定clang-indexer是否仍然使用最新版本的clang进行编译。我们的想法是构建一个代码数据库,并从当前代码中提取真实的上下文,以便正确识别重载等。我最后一次使用时,有时会遇到麻烦以确定当前的背景。
请注意YouCompleteMe应该能够跳转到函数声明,并且在最佳情况下跳转到函数定义,它与当前文件位于同一个转换单元中。