【问题标题】:Vim C++ (Qt, C) development powerful plugins [closed]Vim C++(Qt,C)开发强大的插件 [关闭]
【发布时间】:2014-08-22 19:04:08
【问题描述】:

我想在开发中尝试vim(我使用linux),但是插件很多,文档很多,所以很难找到我想要的插件。

我将使用:C++、Qt、C。所以这就是我需要的插件:

1)Code completion

1.1) 从标准库、侧库、我的源代码中完成everythingsmart(包括嵌套模板和包含文件)。 (可能完成的弹出窗口必须显示函数参数和结果,所以我可以看到重载的函数)。我不关心它应该如何组织,但我需要告诉完成者我想要哪些库以及所有项目文件的位置。

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.hfoo.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


【解决方案1】:

请记住,即使有多个插件,Vim 的核心也是通用编辑器,无法与特定语言的专用 IDE 竞争。

对于代码完成,YouCompleteMe 似乎是目前最流行的。如果您有关于配置的特定问题,使用适当标签的替代问题会更容易处理。

导航

2.1 你应该安装 ctags 或 cscope

2.2 个带有 :tn:tp 的 ctags

2.3 寻找.vim

2.4 有跳转列表,可以用CTRLI/CTRLO前进/后退.检查:help jump。您也可以使用标记:help mark

对于通用导航(不基于代码),我还推荐Ctrl-P

关于代码生成

您可以混合使用可扩展的 Snipmate(插件)和您自己的宏(使用 abbr 等)。

Vim 真正是关于配置/开发您自己的解决方案,而不是获得一个安装了所有东西的完整包。

一般来说,作为一个普通的 vim 用户,我认为 Vim 的代码完成、生成、重构部分大多数时候不如专用的 IDE。我用 Eclim 玩了一段时间,现在我基本上是在 Vim 和 IDE 之间切换(如果可能的话,使用 Vim 模式),这取决于我目前正在做什么。

【讨论】:

    猜你喜欢
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 2011-01-22
    相关资源
    最近更新 更多