Vim转到std库方法/函数定义

时间:2012-11-11 19:43:32

标签: c++ vim autocomplete std go-to-definition

我喜欢与vim相关的一些插件,我已经安装了大部分插件作为git子模块(clang_complete,cvim,fugitive,NerdTree,pathogen,snipMate,supertab,taglist)但是有两个基本功能我无法工作。即

1)示例 - >如果我编译以下示例

// basic file operations
#include <iostream>
#include <fstream>
using namespace std;

int main () {
  ofstream myfile;
  myfile.open ("example.txt");
  myfile << "Writing this to a file.\n";
  myfile.close();
  return 0;
}

我无法弄清楚如何跳转到函数open,即std中的“myfile.open”。图书馆。如果我将代码粘贴到visual studio并单击转到定义,它会直接将我带到那个地方。我已经读过这可以用ctags完成,但是我问自己是否自动完成已经正常工作,即当我输入“myfile”时。我看到一大堆clang给我的方法,所以我想它应该是一些其他更好的方法从vim跳转到类似于(ctrl +])的定义,这应该是开箱即用的。

2)每当我输入点时,在visual studio / .net中。我看到了方法,当我向下滚动方法时,它提供了简短描述这个方法正在做什么。有没有办法在vim中启用类似的东西。据我所知,这应该是std库的属性,但是我在std中看不到任何这样的东西。

2 个答案:

答案 0 :(得分:3)

我认为你将Vim与IDE混淆了。

不能期望任何IDE功能在(非常强大的)文本编辑器中可用,至少不需要付出一些努力。

  1. Vim相当于“转到声明”,<C-]>:tag foo<cr>取决于exuberant-ctags或某些兼容程序生成的一个或多个tags的可用性针对您的代码库和任何标准库。因为Vim没有为(AFAIK)任何语言提供这样的tags文件,所以你必须generate one by yourself告诉Vim在哪里找到它。甚至有a program, hdrtag, specifically written for that,我从来没有用过它。

  2. 我想我已经看到一些自动完成插件在弹出菜单中显示方法的签名,其他一些(PHP,Python)打开一个小的“预览”窗口。这就是你能得到的。如果您有最新的<C-w>}文件,还有tags

  3. 再次: Vim不是IDE。

答案 1 :(得分:0)

确保ctags在生成索引时可以找到std lib中的源代码,你应该没问题。

默认情况下,这些索引工具只在当前目录(及其子文件夹)中添加代码, 所以你需要手动告诉他你系统上安装代码的位置。