C++ 编辑器比较和推荐

序言

对于如今为 C++ 而掉尽头发的技术宅们——无论您是 OIer、计算机爱好者还是专业的程序员,选择一个合适的代码编辑工具都是一个重要的事。这不仅能提高您的开发效率,有时候,也顺带治好了烦人的强迫症嘛……

本文挑选了几个常见的可以用 C++ 的编辑器进行比较。当然,不会包括记事本,也没有 Visual C++ 6.0 这种老古董。

1. Visual Studio

作为当之无愧的“宇宙第一 IDE”,这款 IDE 饱受计算机领域的赞美。首先,其涵盖了绝大多数的开发需要,无论您的目的是小型命令行应用、简单桌面应用、UWP、跨平台应用,它都能解决。它也自带强大的项目管理,原生兼容 Git,对于大型项目出乎意料地友好。它也是高性能高稳定性的代表。什么?您的项目花了几十分钟打开并且几乎全程未响应?您可以试试看用 CLion 或者 XCode 会怎么样。如果不出意外的话,是不用这么久,但还没打开也许就崩溃了……

Visual Studio 作为 IDE 而非简单的编辑器,安装时就已经内嵌了 Microsoft C/C++ Compiler 编译器。当然,它并不完全符合 C++ 的标准,但已经相当优秀,并且除非您执意要使用未定义行为或者一些奇葩的语法……

Visual Studio 具有极其的可扩展性和可自定义性,代码格式化功能可以使得您写出来的每一句都可以完美地符合您的审美,而至于可扩展性,自然无需多述。另外,作为微软自家的软件,也可以和 vcpkg 完美地配合。

但是,对于 OIer,它也许就没有那么完美了。基于项目的架构本身就对基于单文件的题目不那么友好,过于庞大甚至臃肿的架构面对极小的代码也不再精简。对于新手,它过多过于复杂的配置可能反而称为了一种负担,令人无从下手。

2. Visual Studio Code

听名字就能知道,它是 Visual Studio 的孪生兄弟。但是,尽管如此,它们却几乎没有任何的共同点。Visual Studio Code 是一款基于 Electron 的轻量级跨平台编辑器应用,并不原生包含编译器。安装、卸载、更新都是极快的事。

它具有更强的可扩展性,并且插件安装和更新的架构也远比 Visual Studio 简单和快速。比起 Visual Studio 那样深度结合 Windows 操作系统、处处部署有其模块,Visual Studio Code 则趋于简单。你可以轻松地将它装上你的移动存储介质,并且只需要移动数个文件夹就可以内嵌插件。它的大部分是开源的,既 VSCodium,类似于 Chromium 或者 AOSP。

它既可以分开处理一个个文件,也可以处理项目——不过仅对于 C++,这通常是 CMake 项目,而不是 Visual Studio 项目。它也可以处理更多语言的文件,甚至对于我这样的编程语言爱好者,编写并处理属于自己的编程语言也是可以的。

Visual Studio Code 对于 C++ 开发的支持是优秀的,当然,这通常基于数个插件。视觉上,它天然地比其他编辑器好看和强大地多,也支持一些特性,比如多个光标,比如连字。如果您正在使用编程开发的专用字体,比如 JetBrains NF 或者 Consolas,不妨试试看输入 <= 是否会变成

然而,对于过于庞大或者过于专业的项目,它可能就不再那么优秀了。同样地,大多数信息学竞赛上的电脑,并没有为它安装一些插件,自然也就无法施展拳脚了。

3. Dev-C++

对于新手 OIer,也许这是一个足够优秀的编辑器。至少,它的安装是足够简易的,并且集成了 OI 中一切需要的功能。如果把 Visual Studio Code 比作 Arch Linux,那 Dev-C++ 就是 UOS。它不需要过多的配置,但可扩展性也相应地比较低。

Dev-C++ 的调试似乎很糟糕,你应该自己使用 gdb 或 lldb 的命令,或者输出调试,而不是使用自带的调试功能。Dev-C++ 的项目管理功能似乎与其他任何软件都不同,但貌似可以兼容以前的 Visual C++ 项目,尽管最好不要指望这能怎么样。Dev-C++ 几乎没有任何扩展系统,基本上功能已经框死。并且它不兼容 NOI Linux——除非是您自己的电脑,可以考虑使用 Wine,尽管这还是不完美。并不推荐除了新手 OIer 以外的人使用这款 IDE。

然而对于新手,这再合适不过了。新手可能不精通如何配置一个得心应手的 IDE,也不会使用复杂的功能,简单且固定的功能也许正好适合它们。

4. Code::Blocks

这款 IDE 的可扩展性略强于 Dev-C++,并且拥有更多的功能,比如兼容更多的编程语言和编译器,但貌似并不包括最新的那些。同样,它对新手友好,并且它跨平台。如果您是不需要复杂功能,特别是当您是 OIer。它包括一些更高级的功能,比如窗口应用程序的设计。它也可以加载插件,尽管并不多。它的调试功能也处于可用的状态。

它是轻量级中的领先者,兼容多种项目格式,也兼备单文件和项目模式。但是它的设计风格并不是最前沿的。它具有较少的配置,既不是很少,也不算多。对于一位已经入门的爱好者,或者 OIer,使用它或许刚刚好。能折腾一些东西,但又不算太多。

5. Vim、Emacs 和 Nano

知道这两款编辑器的或许多多少少有些资历了。作为早期的开源命令行编辑器的代表,它们虽然简易,却把简简单单的命令行开发到了极致。

首先,它们都没有图形界面,至少基本情况是这样。对于新手,可以放弃了,如果不能够熟练地使用快捷键,它们的效率将远不及现代编辑器。它们也没有任何自带的项目管理等功能,仅仅是编辑器。以 Vim 为例,它的一切功能几乎都要靠配置和装载插件,合理的配置可以使它获得一个基于 TUI 的现代编辑器应有的界面,并且方便地进行编译、项目管理等操作。尽管是作为上古神器,但它们至今仍未退休,因为熟练地运用快捷键可以将效率提升到一个恐怖的程度。对于追求极致的极客,使用鼠标进行操作是他们最不希望的事情,太需要精准的操作对于他们是一件浪费时间的事。

它们可能是程序员的必修课。如果您需要服务器管理,至少大多数情况下,您不应该为服务器安装一个图形界面,此时,使用 SSH 连接时,它们也许是一个明智的选择。当然,最好放弃完全依赖它们来开发大型的项目。

6. CLion

作为 JetBrains 的 IDE 之一,基于 IntelliJ Platform 的软件,它们具有这几款 IDE 中几乎最现代、最前沿的用户界面,并且天生地完全和项目绑定在一起。和其他基于 IntelliJ Platform 的 IDE 一样,它的运行速度较慢,且内存占用较大,有的时候可能会出现一些 BUG。它接入 JetBrains Marketplace,您可以从中获得不少的插件。它的孪生兄弟,IntelliJ IDEA、WebStorm、PyCharm 几乎全都是开发界的佼佼者,自然地,它也受此影响。当然,有一点,它是付费软件,也没有类似于 IntelliJ IDEA 或者 Visual Studio 的个人免费版本,您可能需要保证您的投入是值的。

此外,其他 JetBrains 软件的优点它都具备,比如高可自定义性等。它也与 JetBrains 的生态深度融合。它可能更加适合一些早已习惯于 JetBrains 生态的资深程序员。

7. NeoVim

NeoVim 与 Vim 可以说是一脉相承。当然,作为“Vim 的现代版本”的 NeoVim,自然也具备了很多现代化的特性,比如更加复杂的插件系统和自带的现代化特性。同时,它也具备了 Vim 的几乎全部特性。

如果你是一位追求效率的极客,Vim 或许早就是你心中最优秀的编辑器了。但是,这个“古董”似乎永远停留在了上一个时代。如果你同时还是一个追求现代与新颖的人,或许 NeoVim 就是你的不二之选。当然,不少其他的现代编辑器也提供了模拟 Vim 的插件,比如 VSCode。

8. Notepad++

Notepad++ 是一款运行在 Windows 平台的轻量级文本编辑器,可以说是记事本的扩展。它扩展的方面主要在于对编程开发友好,比如默认使用等宽字体、语法高亮、自动缩进等,当然,作为一款合格的代码编辑器,这都是最基本的事。

它把几乎全部的精力都投入到了做一款万能而简单的代码编辑器上。如果你喜欢简洁,喜欢轻量级,而又希望多功能,也许它是一个不错的选择。当然,对于太专业的场合来说,它并没有那么合适,或许因为它本身的地位就是“记事本的扩展”吧。

9. Sublime Text

这款编辑器的地位大抵位于 VSCode 和 Notepad++ 之间,它的可扩展性中等,不算大也不是特别小。它既追求设计的现代化,又追求简明。对于喜欢折中的人也许确实不错。

使用它,你未必需要过多的设置,当然也可以充分地个性化。当然,它仍然是一款“文本编辑器”,对于过于专业的场景,同样不一定适用。对于非专业的那些人,特别是对软件的设计和个性化很在意的人,选择它,或许就很不错。当然,它是有激活的,你可能不得不在使用不完整版、付费和做一件不好的事之间做出选择。