Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Vim C++;(Qt,C)开发功能强大的插件_C++_Qt_Vim_Development Environment - Fatal编程技术网

C++ Vim C++;(Qt,C)开发功能强大的插件

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

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

<>我将使用:C++、Qt、C.,所以这就是我需要的插件:

1)
代码完成

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之外我能做的一切