我想在开发中尝试使用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_H_
包含保护和#include "foo.h"
的foo.h
和foo.c(pp)
3.2)对于在foo.h
中声明的函数,我想要在foo.c(pp)
中创建定义。而且所创建的定义的位置应该与头文件中的位置相同。而且如果我在foo.cpp
中有一个声明并使用了这个函数,那么它应该在同一文件foo.cpp
中创建定义。3.3)应该很容易创建代码生成模板,以便我可以创建自己的模板来生成例如
pimpl
惯用法(代码应同时出现在头文件和源文件中)。例如:当我在
foo.h
处于活动状态时,我写::pimpl Test
,然后得到://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。而且总是有一些混乱的消息,比如template not found(^N^P^U)
。所以我不知道这是一个bug还是一个特性。无论如何,我尝试了clang_complete
,但是也有类似的问题。对于代码生成,我找到了几个片段插件,但是我没有太研究它们,因为如果我找不到合适的代码完成和导航,那么使用vim就没有意义。
所以,如果有人能告诉我在哪里搜索......那就太好了。