跳到正文

编辑器与 IDE ​

开发环境是改代码时用到的一整套工具,编辑器只是其中最显眼的一件。

一套环境由什么组成 ​

写代码时反复发生的动作只有几类:跳到某个符号、看清它的类型、改一行、跑一次检查。每一类背后都是一个可替换的部件。

能力终端里的工具IDE 里的形态
文本编辑Vim、Neovim、Emacs内置编辑器
语法高亮编辑器自带或 tree-sitter内置
补全与跳转语言服务器加 LSP 客户端扩展加语言服务器
格式化ruff format、gofmt保存时自动运行
类型检查mypy、tsc --noEmit编辑时标波浪线
构建与测试make、pytest、cargo任务面板包一层命令

IDE 把这些部件塞进一个进程,共享同一份项目索引和光标状态。终端工作流让每个部件独立运行,靠文件和 stdin 串起来,代价是要自己接线。编辑器本身只负责把字符写进文件,扩展市场补上其余的部分。

两条路线怎么取舍 ​

讲义的建议是两者都熟,至少精通一个。没有偏好时从 VS Code 起步,默认配置就能补全、跳转、调试,AI 补全也接得最顺。Vim 的按键习惯也能搬走:VS Code 装 VSCodeVim,zsh 用 bindkey -v,Claude Code 有编辑器模式。

维度图形 IDE终端工作流
上手成本低,装完即用高,要自己配
资源占用几百 MB 起几十 MB
环境限制需要 GUI,可能要装软件有 shell 就能跑
远程开发插件成熟,体验接近本地ssh 加 tmux 即可
可定制性受扩展市场限制无限,但全要手写

图形与终端不是二选一。常见组合是终端里跑测试、git、ssh,编辑器里改代码;VS Code 的集成终端就是这个组合的折中。

从终端打开项目 ​

bash
code .                          # 用 VS Code 打开当前目录
code --diff a.py b.py           # 并排比较两个文件
code --list-extensions          # 看装了哪些扩展
export EDITOR=nvim              # 让别的程序知道用哪个编辑器
git config --global core.editor "code --wait"

$EDITOR 决定 git commit、crontab -e、visudo 打开哪个编辑器。用图形编辑器必须加 --wait,否则命令立刻返回,提交消息是空的。

只有终端的时候 ​

ssh 进服务器、钻进容器、跑在 CI 机器上,GUI 都不存在。这时 vim/nvim、tmux 加语言命令行工具是唯一可用的组合,也是这套工作流值得学的原因。

场景可用方案
无 GUI 服务器vim 加 tmux
容器内部装 nvim 或挂载配置目录
只读挂载复制到可写目录再改
带宽很差mosh 加 vim,别开图形转发

编辑器不是构建系统 ​

编辑器负责编辑,构建、测试、运行交给 make、pytest、cargo。IDE 的任务面板只是把这些命令包了一层,换编辑器时不该重写它们。

把常用命令写进 Makefile 或 justfile,图形界面和终端就共用同一份入口,新人也不用猜该按哪个按钮。