我想在开发中尝试
vim(我使用
linux),但是有很多插件包含大量文档,因此很难找到我想要的插件.
我将使用:C,Qt,C.所以这就是我需要的插件:
1)代码完成:
1.1)从标准库,侧库,我的源代码中完成所有内容和智能(包括嵌套模板和包含文件). (可能完成的弹出窗口必须显示函数参数和结果,所以我可以看到重载的函数).我不打扰它应该如何组织,但我需要告诉完成者我想要哪些库以及所有项目文件所在的位置.
1.2)完成者必须显示帮助信息(功能模板),直到我完成它.
我会试着解释一下:
foo.bar(a.firstArg(p1, p2), b.secondArg(p3, p4, p5))
当我输入foo.bar时(我仍然希望看到有关foo.bar的帮助信息)
功能和它的论点.
然后当我键入a.fir时,我想选择,例如,tab并完成a.firstArg(并且应该显示有关a.firstArg函数和参数的新信息,直到我写a.firstArg(p1,p2)当我写p1时,它应该完成它,然后在我写完之后,再次显示关于a.firstArg的信息.所以我完成了这个嵌套语句,然后当我写的时候,再次显示关于foo.bar参数的弹出窗口等等,直到我完成陈述.
所以我想一直看到有关未完成陈述的所有信息,直到我完成陈述.如果有多个重载函数,我希望能够选择我想要查看的信息.
1.3)拥有快速自动完成菜单和能力是很好的
选择前进和后退.
2)导航(这应该与完成者配对,所以它应该
采取关于库,我提供的来源完成并使用它进行导航):
2.1)转到光标下的符号声明.
2.2)在声明和定义之间切换. (或者去定义).
2.3)在foo.h和foo.cpp之间切换(foo.c)
2.4)取回几次跳跃. (所以我可以去声明,然后去定义,然后转到我在那里看到的某些功能的声明然后切换到cpp文件,然后回到默认位置(可能在相同数量的跳转)).
3)代码生成:
3.1)在foo.c(pp)中使用_FOO_H_包含guard和#include“foo.h”创建foo.h和foo.c(pp)
3.2)对于foo.h中声明的函数,我想在foo.c(pp)中创建定义.此外,创建的定义的位置应与头文件中的位置相同.而且如果我在foo.cpp中有一个声明并使用这个函数,那么它应该在同一个文件foo.cpp中创建定义.
3.3)应该很容易创建代码生成模板,所以我可以自己创建
用于生成pimpl习语的模板. (代码应该出现在头文件和源文件中).例如:
我写道:pimpl测试当foo.h处于活动状态并得到:
//foo.h
class Test{
public:
private:
class Impl_;
Impl_ *m_i;
};
//foo.cpp
class Test::Impl_{
public:
private:
}
我尝试了什么
我找到了YouCompleteMe,但我没有找到如何获得1.2)行为.此外,ycm服务器崩溃了它自己的libclang.so所以我使用系统clang.总是有一些杂乱的消息,比如找不到模板(^ N ^ P ^ U).所以我无法理解这是一个错误还是一个功能.无论如何,我尝试了clang_complete但是有类似的行为.对于代码生成我发现了几个片段插件,但我没有研究太多,因为如果我找不到合适的代码完成和导航,就没有意义为我使用vim.
如果有人告诉我在哪里搜索会很好
最佳答案 请记住,即使有多个插件,Vim的核心也是通用编辑器,并且无法真正与特定语言的专用IDE竞争.
对于代码完成,YouCompleteMe似乎是目前最受欢迎的.如果您对配置有特定问题,则可以使用适当的标记更轻松地处理备用问题.
关于导航
2.1你应该安装ctags或cscope
2.2 ctags with:tn和:tp
2.3寻找a.vim
2.4有一个跳转列表,您可以使用CTRLI / CTRLO前进/后退.检查:帮忙跳.您还可以使用标记:帮助标记.
对于通用导航(不是基于代码的),我还建议使用Ctrl-P.
关于代码生成
你可以使用相当可扩展的Snipmate(插件)和你自己的宏(使用abbr等).
Vim实际上是关于配置/开发自己的解决方案,而不是获得安装完所有内容的完整软件包.
通常,作为一个普通的vim用户,我认为Vim的代码完成,生成,重构部分大多数时候都不如专用的IDE.我已经和Eclim玩了一段时间,现在我基本上在Vim和IDE之间切换(如果可能的话,用Vim模式),这取决于我现在在做什么.