我想把我的编程视野扩展到Linux。一个好的、可靠的基本工具集很重要,还有什么比IDE更基本呢?

我可以找到这些SO主题:

轻量级IDE linux和 你使用什么工具来开发 Linux上的c++应用程序?

我并不是在寻找轻量级IDE。如果一个IDE值那么多钱,我就会为它付费,所以它不一定是免费的。

我的问题是:

Linux有什么好的c++编程IDE ?

最小值是相当标准的:语法高亮显示、代码完成(如智能感知或其Eclipse对应版本)和集成调试(例如basic 断点)。

我自己也搜索过,但是有太多了,几乎不可能手工区分好的和坏的,特别是对于像我这样在Linux中几乎没有c++编程经验的人来说。我知道Eclipse支持c++,而且我真的很喜欢Java的IDE,但是它对c++有什么好处吗?还有更好的吗?

第二篇文章实际上有一些很好的建议,但我遗漏的是,究竟是什么让建议的IDE对用户这么好,它的(缺点)优势是什么?

也许我的问题应该是:

根据您的经验,您建议使用哪种IDE,为什么?


当前回答

我非常喜欢Ultimate++的IDE。它有一些被设计为与自己的库一起使用的特性(顺便说一下,如果你不想在GTK+或QT上购买,这是一个相当不错的工具包),但它与一般的c++项目一起工作得非常好。它提供了良好的代码补全、良好的语法着色、集成调试以及大多数现代ide支持的所有其他特性。

其他回答

我非常喜欢Ultimate++的IDE。它有一些被设计为与自己的库一起使用的特性(顺便说一下,如果你不想在GTK+或QT上购买,这是一个相当不错的工具包),但它与一般的c++项目一起工作得非常好。它提供了良好的代码补全、良好的语法着色、集成调试以及大多数现代ide支持的所有其他特性。

然后我注意到这根本不是你在那里工作的方式*,我把所有东西都扔了,花了几天时间阅读手册,设置我的shell (bash),设置一个GVIM环境,学习GCC/binutils工具链,make和gdb,从此过上了幸福的生活。

我在很大程度上同意这个观点,但问题也是一种认知:我们忘记了在任何选择的IDE(或其他环境)中变得高效是多么困难。我发现IDE (Visual Studio, NetBeans, Eclipse)在很多方面都非常麻烦。

作为一个老UNIX用户,我总是使用Emacs。但这是相当陡峭的 而且学习曲线很长,所以我不确定我能不能把它推荐给新人。

我同意;在Linux和MSW (XP2,W2K)上使用Emacs作为我的主要编辑器。 我不同意它有陡峭的学习曲线,但可以说,因为大量的功能,它有一个很长的学习曲线。你可以在短时间内变得富有成效,但如果你愿意,你可以在未来几年学习它的新功能。

但是,不要指望Emacs的所有功能都可以在下拉菜单中找到,因为下拉菜单中有太多的功能。

正如我提到的,我已经在MSW上使用GNU Emacs很多年了。在我“升级”到2008年之前,它总是能很好地与Visual Studio一起工作;现在,在从磁盘刷新文件之前,它有时会延迟许多秒。在VS窗口中编辑的主要原因是“智能感知”代码完成功能。

也许Linux Tools Project for Eclipse可以满足您的需求?

Linux Tools项目旨在为Linux开发人员提供功能齐全的C和c++ IDE。我们以CDT的源代码编辑和调试特性为基础,并集成了流行的本地开发工具,如GNU Autotools、Valgrind、OProfile、RPM、SystemTap、GCov、GProf、LTTng等。目前的项目包括LTTng跟踪查看器和分析器、RPM .spec编辑器、Autotools构建集成、Valgrind堆使用分析工具和OProfile调用分析工具。

最初:混乱

在最初写这个答案的时候,我最近从Visual Studio(有多年的经验)切换到Linux,我做的第一件事就是试图找到一个合理的IDE。在当时这是不可能的:没有好的IDE存在。

顿悟:UNIX是一个IDE。全部。1

然后我意识到Linux中的IDE是命令行及其工具:

首先设置shell 对我来说是巴斯,但很多人更喜欢 鱼或 (哦,天哪)Zsh; 还有你的编辑;选择你的毒药——两者都是最先进的: Neovim2或 Emacs。

根据你的需要,你将不得不安装和配置几个插件,使编辑器工作得很好(这是一个烦人的部分)。例如,Vim上的大多数程序员将受益于智能自动补全的YouCompleteMe插件。

完成这些之后,shell就是与各种工具交互的命令界面——调试器(gdb)、分析器(gprof、valgrind)等。你设置你的项目/构建环境使用Make, CMake, SnakeMake或任何各种替代方案。使用版本控制系统(大多数人使用Git)管理代码。您还可以使用tmux(以前也使用screen)来复用(=认为有多个窗口/选项卡/面板)并持久化您的终端会话。

关键是,由于shell和一些工具编写约定,这些都可以相互集成。这样一来,Linux shell就是一个真正的集成开发环境,完全可以与其他现代ide相提并论。(这并不意味着单个ide没有命令行可能缺乏的特性,相反也是如此。)

对每个人来说

一旦你养成了习惯,我不能夸大上述工作流的功能有多好。但是有些人只是喜欢图形化编辑器,在最初编写这个答案之后的几年里,Linux已经为几种不同的编程语言获得了一套优秀的图形化ide(但据我所知,还没有用于c++)。即使像我一样,你最终不用它们,也要试一试。以下只是一小部分有偏见的选择:

对于Python开发,有PyCharm 对于R,有RStudio 对于JavaScript和TypeScript,有Visual Studio Code(这也是一个很好的全能编辑器) 最后,许多人喜欢Sublime文本编辑器进行一般的代码编辑。

请记住,这个列表还远远不够完整。


1我从dsm的评论中偷了这个标题。

我以前在这里指的是Vim。虽然普通的Vim仍然很有能力,但Neovim是一个很有希望的重启,它对一些旧缺点进行了现代化改造。

为什么不把它也用在c++中呢? CDT满足您的所有要求 提及。

我一开始没有使用eclipse,因为我不确定它是否同样能够(高效地)为我提供在c++中开发的方法。除此之外,我还确信在Linux中必须有更好、更专业的工具用于c++开发:

我真的很喜欢java的eclipse IDE, 但是它对c++有什么好处吗 错过一些公平的东西 更好吗?

我真诚地相信,尽管一些工具(比如eclipse)在很多方面都很出色,但最好还是寻找其他的选择(我不是说只针对IDE,而是一般情况,甚至在现实生活中)…… 就像在这种情况下,vim真的很棒,如果我坚持一些我已经知道的东西,我就会错过它。