我的 Linux 开发环境 — 2026

2026 年更新的 Linux 开发环境。已经不使用桌面环境,全部通过 KVM 虚拟机 + SSH + tmux 完成开发工作。

语速

2019 年写过一篇我的 Linux 开发环境,当时还在推荐 Linux Mint + Cinnamon 桌面。七年过去,我的开发方式已经完全变了 — 不再使用桌面环境,所有开发工作都在 KVM 虚拟机里通过 SSH + tmux 完成。

操作系统

现在用的是 Debian 12 (bookworm),跑在 KVM 虚拟机里。没有桌面环境,纯命令行。

为什么不折腾桌面了?因为没必要。开发工作全部在终端里完成,日常的 IM(微信、钉钉)、文档编辑、浏览器这些事情在 Windows PC 和 MacBook 上做,Linux 虚拟机只负责跑代码和服务。Debian 稳定、包版本够用、安全更新及时,做开发环境很合适。

宿主机是一台 Intel i7-13620H 的 mini 主机,给虚拟机分配了 8 核 18GB 内存,跑起来绰绰有余。

Shell

用的是 zsh + oh-my-zsh,主题 candy。插件装了三个:

  • zsh-autosuggestions — 历史命令自动补全
  • zsh-syntax-highlighting — 命令语法高亮
  • zsh-completions — 额外的补全规则

2019 年我推荐过用 antigen 来管理 zsh 插件,现在觉得 oh-my-zsh 够用了,没必要多一层抽象。

SSH key 用 keychain 管理,登录时自动加载 id_ed25519,不用每次输密码。

终端复用

tmux 是整个开发环境的核心。日常开一个 tmux session,里面分几个 window:

  • editor — Neovim
  • server — 跑项目服务
  • shell — 杂活
  • docker — 看容器状态

tmux 配置了鼠标支持、256 色、窗口编号从 1 开始、历史记录 10000 行。还配了一个 systemd user service 做 tmux watchdog,tmux 进程挂了能自动恢复。

编辑器

Neovim 0.11,用的是 LazyVim 发行版。之前用过纯手配的 init.vim,后来切到 LazyVim — 开箱即用的 LSP、补全、文件树、git 集成,省了很多配置时间。

系统里也装了 vim,偶尔在没有 nvim 的机器上救急用。

编程语言和运行时

同时在用好几门语言,每门都有对应的版本管理工具:

语言版本版本管理
Python3.11系统自带 + uv 管理项目依赖
Node.js22nvm
Go1.24系统安装
Rust1.94rustup(stable + nightly)

uv 是最近 Python 生态里最大的改善,比 pip 快一个数量级,项目隔离也做得好。nvm 管 Node 版本,按项目切。Go 和 Rust 都是直接装最新稳定版。

工具链

日常开发用到的工具:

  • Docker 28.4 + Docker Compose v2 — 数据库和中间件全跑在容器里,Redis、PostgreSQL、RabbitMQ 都有
  • protoc + grpcurl — gRPC 开发调试
  • OpenCode / MiMoCode / Kimi Code — AI 辅助编程
  • autossh — 维护到远程服务器的 SSH 隧道
  • keychain — SSH key 管理

Git

全局配置了一些常用 alias:

1
2
3
4
5
6
co = checkout
br = branch
ci = commit
st = status -sb
ll = log --oneline
cm = commit -m

没有用 GUI 客户端,全部命令行操作。diff 用 git difftool 配 vimdiff。

远程访问

通过 autossh 维护到远程服务器的持久 SSH 隧道,systemd user service 保活。SSH config 里配了多台服务器的跳板和端口转发。

systemd user services

除了 tmux watchdog,还跑着 user service:

  • review-server — PR review webhook 服务

用 systemd user service 而不是 cron 或 screen 来跑常驻进程,好处是日志统一管理(journald),开机自启,进程挂了能自动重启。

总结

2026 年的开发环境和 2019 年相比,最大的变化就是 去掉了桌面环境。工具链越来越成熟,终端里的体验已经足够好。不需要在桌面和终端之间切来切去,所有东西都在 tmux 里一个窗口搞定。

如果你也在犹豫要不要脱离桌面环境,我的建议是:先把日常工具全换成命令行版本,等你觉得切桌面只是为了开浏览器的时候,就可以考虑去掉它了。


旧版文章见:我的 Linux 开发环境(2019)。那篇还推荐桌面环境和 LibreOffice,现在回头看恍如隔世。