【发布时间】:2014-08-22 19:04:08
【问题描述】:
我想在开发中尝试vim(我使用linux),但是插件很多,文档很多,所以很难找到我想要的插件。
我将使用:C++、Qt、C。所以这就是我需要的插件:
1)Code completion:
1.1) 从标准库、侧库、我的源代码中完成everything 和smart(包括嵌套模板和包含文件)。 (可能完成的弹出窗口必须显示函数参数和结果,所以我可以看到重载的函数)。我不关心它应该如何组织,但我需要告诉完成者我想要哪些库以及所有项目文件的位置。
1.2) 完成者must 显示帮助信息(函数模板),直到我完成为止。
我会试着解释一下:
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) Navigation(这应该与完成者成对工作,所以它应该
将我提供给完成者的 about 库和资源用于导航):
2.1) 转到光标下符号的声明。
2.2) 在声明和定义之间切换。 (或者去定义)。
2.3) foo.h 和 foo.cpp (foo.c) 之间切换
2.4) 退回几次跳跃。 (所以我可以去声明,然后去定义,然后去声明我在那里看到的一些函数,然后切换到 cpp 文件,然后回到默认位置(可能在相同数量的跳转中)。
3) 代码生成:
3.1) 创建foo.h 和foo.c(pp),_FOO_H_ 在foo.c(pp) 中包含警卫和#include "foo.h"
3.2) 对于foo.h 中声明的函数,我想在foo.c(pp) 中创建定义。此外,创建定义的位置应与头文件中的位置相同。此外,如果我在foo.cpp 中有一个声明并使用此函数,那么它应该在同一文件foo.cpp 中创建定义。
3.3) 应该很容易创建代码生成模板,所以我可以创建自己的
要生成的模板,例如,pimpl idiom。 (代码应立即出现在头文件和源文件中)。例如:
当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)。所以我不明白这是一个错误还是一个功能。无论如何,我尝试了clang_complete,但也有类似的行为。代码生成方面我找了几个sn-p插件,但没有过多研究,因为如果找不到合适的代码补全和导航,对我来说用vim是没有意义的。
如果有人能告诉我在哪里搜索,那就太好了......
【问题讨论】:
-
听起来你想要一个 IDE,而不是文本编辑器。
-
@romainl 实际上我只想要 DE 的一部分。而且几乎只有文字相关的部分。我不需要自动构建设置或使用断点进行调试。我不需要保存项目状态或集成版本控制。我不需要 gui 来设置编译选项,也不需要其他 IDE 好处。我只需要智能文本分析和舒适的文本完成、导航和生成。我可以在编辑器之外做的所有其他事情。
-
尝试在Software Recommendations 上提问,但请确保您关注他们的question quality guidelines。
-
对不起(我不能再在适当的地方回答)。 2.2.我使用 lh-cpp 套件中的 :GOTOIMPL (code.google.com/p/lh-vim/wiki/lhCpp)。 2.3.我使用替代(从那时起存在其他解决方案)。 3. 我使用我的 mu-template+lh-cpp 的 fork。它还没有提供 pimpl 生成器(它很容易添加),但是您会发现您询问的有关新文件的所有内容(正确的标头生成; foo.c(pp) 将包括 foo.h(pp.. .) 如果找到,甚至将文件包含在正确的路径中 -> #include "module/submodule/foo.h", ...)
标签: c++ qt vim development-environment