C++ Vim C++;(Qt,C)开发功能强大的插件
我想在开发中尝试vim(我使用linux),但是有很多插件有很多文档,所以很难找到我想要的插件 <>我将使用:C++、Qt、C.,所以这就是我需要的插件: 1)C++ Vim C++;(Qt,C)开发功能强大的插件,c++,qt,vim,development-environment,C++,Qt,Vim,Development Environment,我想在开发中尝试vim(我使用linux),但是有很多插件有很多文档,所以很难找到我想要的插件 我将使用:C++、Qt、C.,所以这就是我需要的插件: 1) 代码完成: 1.1)从标准库、侧库和我的源代码中完成所有内容和智能(包括嵌套模板和包含文件)。(可能完成的弹出窗口必须显示函数参数和结果,以便我可以看到重载函数)。我不关心它应该如何组织,但我需要告诉completer我想要哪些库,以及所有项目文件的位置 1.2)完成者必须显示帮助信息(功能模板),直到我完成。 我试着解释一下: foo.b
代码完成
:
1.1)从标准库、侧库和我的源代码中完成所有内容
和智能
(包括嵌套模板和包含文件)。(可能完成的弹出窗口必须显示函数参数和结果,以便我可以看到重载函数)。我不关心它应该如何组织,但我需要告诉completer我想要哪些库,以及所有项目文件的位置
1.2)完成者必须
显示帮助信息(功能模板),直到我完成。
我试着解释一下:
foo.bar(a.firstArg(p1, p2), b.secondArg(p3, p4, p5))
当我键入foo.bar(
时,我仍然想查看有关foo.bar的帮助信息
函数及其参数。
然后,当我键入a.fir
时,我想选择,例如,tab
并完成a.firstArg(
),在我写入a.firstArg(p1,p2)之前,应该显示关于a.firstArg
函数和参数的新信息当我写p1
时,它应该完成它,然后在我写之后,
关于a.firstArg
的信息会再次显示。所以我完成了这个嵌套语句,然后当我写时,
关于foo.bar
参数的弹出窗口会再次显示。依此类推,直到我完成语句
所以我想一直看到关于未完成语句的所有信息,直到我完成该语句。如果有多个重载函数,我希望能够选择要查看的信息
1.3)拥有快速自动完成菜单和
选择前进和后退
2) 导航
(这应该与completer成对工作,所以它应该
以我提供给completer的关于库和源代码为例,并将其用于导航):
2.1)转到光标下的符号声明
2.2)在声明和定义之间切换。(或转到定义)
2.3)在foo.h和foo.cpp(foo.c)之间切换
2.4)返回几次跳跃。(所以我可以去声明,然后去定义,然后去声明我在那里看到的一些函数,然后切换到cpp文件,然后回到默认位置(可能有相同数量的跳跃)
3) 代码生成:
3.1)创建foo.h
和foo.c(pp)
with\u foo\u h
包括防护装置和在foo.c(pp)
3.2)对于foo.h
中声明的函数,我想在foo.c(pp)
中创建定义。此外,创建的定义的位置应该与头文件中的位置相同。而且,如果我在foo.cpp
中有一个声明并使用这个函数,那么它应该在同一个文件foo.cpp
中创建定义
3.3)应该有易于创建的代码生成模板,因此我可以创建自己的模板
要生成的模板,例如,pimpl
idiom。(代码应同时出现在头文件和源文件中)。例如:
我写::当foo.h
处于活动状态时,pimpl测试
,并获取:
//foo.h
class Test{
public:
private:
class Impl_;
Impl_ *m_i;
};
//foo.cpp
class Test::Impl_{
public:
private:
}
我尝试了什么
我找到了YouCompleteMe
,但我没有找到如何获得1.2)
行为。此外,ycm服务器因其自身的libclang而崩溃。因此
我使用系统clang。而且总是有一些杂乱的消息,比如找不到模板(^N^P^U)
。所以我不明白这是一个bug还是一个特性。不管怎样,我尝试了“叮当”完成,但也有类似的行为。对于代码生成,我发现了几个代码片段插件,但我没有对它们进行太多的研究,因为如果我找不到合适的代码完成和导航,那么对我来说使用vim是没有意义的
因此,如果有人能告诉我在哪里搜索,那就太好了…请记住,即使有多个插件,Vim的核心还是一个通用编辑器,在特定语言方面无法与专用IDE竞争
对于代码完成,YouCompleteMe
似乎是目前最受欢迎的。如果您对配置有一个特定的问题,那么使用适当的标签在另一个问题中处理会更容易
论航海
2.1您应该安装ctags或cscope
2.2带有:tn
和:tp
2.3寻找a.vim
2.4有一个跳转列表,您可以使用CTRLI/CTRLO前进/后退。选中:帮助跳转。您还可以使用标记:帮助标记
对于通用导航(不基于代码),我还建议使用Ctrl-p
关于代码生成
您可以使用Snipmate(插件)和您自己的宏(使用abbr等)的组合,Snipmate(插件)是非常可扩展的
Vim实际上是关于配置/开发您自己的解决方案,而不是安装所有组件后获得完整的软件包
一般来说,作为一个普通的vim用户,我认为vim的代码完成、生成和重构部分在大多数情况下都不如专用的IDE。我使用Eclim已经有一段时间了,现在我基本上在Vim和IDE之间切换(如果可能的话,使用Vim模式),这取决于我目前正在做的事情。你听起来像是想要一个IDE,而不是一个文本编辑器。@romainl实际上我只想要DE的一部分,而且几乎只想要一个与文本相关的部分。我不需要自动生成设置或使用断点进行调试。我不需要保存项目状态或集成版本控制。我不需要gui来设置编译选项,也不需要其他IDE的好处。我只需要智能文本分析和舒适的文本完成,导航和生成。在e之外我能做的一切