编辑器与 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,图形界面和终端就共用同一份入口,新人也不用猜该按哪个按钮。