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

我可以找到这些SO主题:

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

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

我的问题是:

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

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

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

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

也许我的问题应该是:

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


当前回答

你能再解释一下你的情况吗,你需要改变什么。也许你可以通过提供一些你使用的信息的链接给我指明正确的方向。

我的第一个来源实际上是工具的手册页。只要输入

$ man toolname

在命令行上($ here是提示符的一部分,而不是输入)。

Depending on the platform, they're quite well-written and can also be found on the internet. In the case of make, I actually read the complete documentation which took a few hours. Actually, I don't think this is necessary or helpful in most cases but I had a few special requirements in my first assignments under Linux that required a sophisticated makefile. After writing the makefile I gave it to an experienced colleague who did some minor tweaks and corrections. After that, I pretty much knew make.

我使用GVIM是因为我在这方面有一些(但不是很多)经验,关于Emacs或替代方案我不能说什么。我发现阅读别人的.gvimrc配置文件真的很有帮助。很多人把它放在网上。这是我的。

不要试图一次掌握所有的双utils,有太多的函数。但是要有一个大概的了解,这样你就知道将来需要什么东西的时候去哪里找了。但是,您应该知道g++和ld (GCC链接器工具,自动调用,除非显式阻止)的所有重要参数。

另外,我很好奇,编码时有代码完成和语法高亮吗?

语法高亮:是的,而且比Visual Studio好得多。代码完成:差不多。首先,我必须承认,我甚至在Visual Studio中都没有使用c++代码补全,因为(与VB和c#相比)它不够好。我现在不经常使用它,但是尽管如此,GVIM对c++有本地代码补全支持。结合ctags库和像taglist这样的插件,这几乎就是一个IDE。

实际上,是阿明·罗纳切的一篇文章激发了我的灵感。在阅读文章之前,看看文章末尾的截图!

在得到(语法)错误之前必须先编译吗?

是的。但这对于Visual Studio来说是一样的,不是吗(我从来没有用过Whole Tomato)?当然,语法高亮显示不匹配的括号,但仅此而已。

如何调试(再次考虑断点等)?

我使用gdb,这是一个命令行工具。还有一个叫做DDD的图形前端。gdb是一种现代的调试工具,可以做您在IDE中可以做的所有事情。唯一真正让我恼火的是读取堆栈跟踪,因为行没有缩进或格式化,所以当你使用很多模板时(我就是这样做的),很难扫描信息。但这些也会使ide中的堆栈跟踪变得混乱。

就像我说的,我很“荣幸”在高中时使用windows记事本和命令行Java编译器迈出了我在Java编程语言中的第一步,它是…嗯,噩梦!当然,当我把它和我当时学的其他编程课程进行比较时,我们有不错的IDE

您甚至不应该尝试将现代的全功能编辑器(如Emacs或GVIM)与Notepad进行比较。记事本是一个修饰的文本框控件,这真的使所有的不同。此外,在Linux和Windows中使用命令行是一种非常不同的体验。Windows cmd.exe严重损坏。PowerShell要好得多。

/EDIT: I should mention explicitly that GVIM has tabbed editing (as in tabbed browsing, not tabs-vs-spaces)! It took me ages to find them although they're not hidden at all. Just type :tabe instead of plain :e when opening a file or creating a new one, and GVIM will create a new tab. Switching between tabs can be done using the cursor or several different shortcuts (depending on the platform). The key gt (type g, then t in command mode) should work everywhere, and jumps to the next tab, or tab no. n if a number was given. Type :help gt to get more help.

其他回答

对这个问题有一个快速的跟进…

自从我开始使用Vim作为我的主要“GUI”已经有一个月了 在Linux下编程c++的工具。首先是学习 曲线确实有点陡,但过了一段时间,随着 正确的选项打开和脚本运行我真的 掌握诀窍了!

我喜欢如何塑造Vim以满足您的需求; 只需添加/更改键映射,Vim就变成了一个 高效的“IDE”。

在Linux上构建和编译c++程序的工具链是 也很直观。Make和g++是你需要的工具 使用。

调试器ddd并不是真的那么好,但是 也许是因为我还没有时间去掌握它 正常。

所以对于那些正在或正在寻找一个好的c++ IDE的人来说 Linux,就像我一样,你最好的赌注在于标准 Linux本身(Vim, g++, ddd)和你 真的应该至少尝试使用它们,然后再寻找 sonething别的……

最后但并非最不重要的,我真的想感谢康拉德 他的回答是,它真的帮我找到了自己的路 Linux开发环境,谢谢!

我也不会结束这个问题,所以大家可以 React或甚至添加新的建议或添加到 已经是很好的答案了……

也许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是一个很有希望的重启,它对一些旧缺点进行了现代化改造。

在Visual Studio环境下长大,我发现相对年轻的Code::Blocks非常熟悉。

我个人最喜欢的是CodeLite 2。x IDE。

参见:http://www.codelite.org

使用CodeLite的决定是基于对以下Linux c++ IDE的研究:

Eclipse Galileo与CDT插件 NetBeans 6.7(它也是SunStudio IDE的基础) KDevelop4 CodeBlocks 8.02 CodeLite 2.倍

毕竟我决定使用CodeLite 2.x。

下面我列出了关于上述c++ ide的一些优点和缺点。请注意,这只是我个人的意见!

编辑:很遗憾,SOF不支持表格,所以我必须写在段落…

Eclipse Galileo与CDT插件

优点:

合理的快 也支持Java, Perl(带E.P.I.C插件) 常用且维护良好 也适用于其他操作系统(Windows, MacOS, Solaris, AIX(?))

缺点:

GUI非常混乱,有些不一致——一点都不直观 重的重量 仅支持CVS (AFAIK)

NetBeans 6.7(注意这也是SunStudio IDE的基础)

优点:

这是我见过的最直观的GUI之一 也支持Java, Python, Ruby 集成CVS, SVN, Mercurial 常用且维护良好 也适用于其他操作系统(Windows, MacOS, Solaris)

缺点:

非常的缓慢 重的重量 使用空格缩进,这不是我工作的政策。我相信这是可配置的,但我不知道如何做到这一点

KDevelop4(注意:我没有对它进行太多测试)

优点:

Linux上常用 集成CVS, SVN, Mercurial

缺点:

GUI看起来有些过时 重的重量 非常特定于KDE环境

CodeBlocks 8.02(注意:我没有对它进行太多测试)

优点:

合理的快

缺点:

GUI看起来有些过时(尽管它有一个很好的启动屏幕) 编辑器中的字体非常小 一些图标(例如调试器相关的开始/步进图标)非常小 没有源代码控制集成

CodeLite 2。X(注:这是我个人的最爱)

优点:

我在Linux上见过的最好的、现代的、直观的GUI 轻量级 合理的快 集成了SVN 也适用于其他操作系统(Windows, MacOS, Solaris(?))

缺点:

没有CVS集成(这对我来说很重要,因为我必须在工作中使用它) 不支持Java, Perl, Python(如果有的话就好了)