跳转至

编辑器

基本概念

编辑器(本文所指都是文本编辑器),顾名思义,就是可以编辑文本文件的工具。写代码离不开编辑器

语言服务

大多数编辑器都会提供一些功能以提高开发效率,一般称为语言服务,包括但不限于

  • 语法高亮
  • 代码补全
  • 类型提示
  • 引用跳转

图形界面

大多数编辑器为了易用,也会提供图形界面,并且可能提供一些按钮,通过点击它们来执行一些操作,包括但不限于

  • 生成
  • 运行
  • 调试
  • 测试

集成开发环境

要理解什么是集成开发环境(IDE),得首先有一点基本的开发常识

下图以 C/C++ 为例展示了最简单的开发流程

flowchart LR
    A[代码] --编译器--> B[可执行文件]
    B --直接运行--> C[结果]
    B --用调试器运行--> C[结果]

因此传统的开发场景(即不使用 IDE)是,在编辑器里编写代码,然后在终端里用编译器生成可执行文件,最后直接运行或用调试器运行可执行文件。

很多人喜欢 IDE,因为它让开发变得更方便。IDE 把一切都整合到了一起,捆绑了编辑器、调试器以及各种配件。用户不需要安装额外的东西,不需要任何配置,就可以享受到丰富的语言服务,以及多种操作的 GUI 界面。这对初学者很友好,因为用户不需要知道编译器调试器解释器等工具应该怎么安装和使用,一些人甚至可能连自己使用的编程语言的基本常识都不知道(比如,有些写 C/C++ 的人不知道编译是什么东西)。

但我不建议任何希望提升自己水平的、有一定经验的开发者使用 IDE。IDE 有很多缺点

  • 捆绑了很多东西,不够轻量,不够灵活,很难定制
  • 通常 IDE 都是针对某个特定编程语言设计的,不能够很好地支持多语言项目,每换个语言写项目就要换个 IDE,重新学习各种操作、适应新的界面。使用 IDE 本意是为了节约学习成本和减轻记忆负担,这下反而得不偿失了(当然,如果你从不参与多语言项目,永远只写一种语言,那么这对你没有影响,但你的技能面也因此而被限制了)
  • 好用的 IDE 大多都要付费(好用的标准比较主观,但很多 IDE 都要付费是真的)

而相比之下,使用编辑器有很多好处,并且这个好处会随着时间的推移而越来越多。尽管起初可能不适应,但你在长期编写代码的过程中对它进行了很多配置(比如通过插件实现了丰富的语言服务和 GUI 操作支持,比如定制了自己喜欢的主题、快捷键、代码片段等),也学会了很多 CLI 工具的使用。你会越用越顺手,开发效率越来越高,并且不像那些用 IDE 的人一样因为要使用别的编程语言而更换编辑器。不夸张地说,一款好的编辑器可以陪你整个开发生涯,是个比被窝更让人感到亲切的东西。

选择

目前所谓好的编辑器主要有以下几个选择

  • VSCode 免费开源,轻量灵活,支持非常高程度的自定义,并且可以通过插件做到类似 IDE 的效果(即丰富的语言服务和 GUI 操作支持),以及拥有 IDE 没有的功能(多语言项目的支持,冷门语言的支持,WSL 的支持等)。我现在所有的项目都是在 vscode 里写的,不管什么语言(包括 c/c++、python、js、julia、md、tex、iverilog 甚至 godot)
  • neovim 我没用过,不评价了