很多终端设置看起来很高效……直到你重启机器
Source: Dev.to
Introduction
如果你经常运行多个开发服务器、保持 SSH 会话打开、实时查看日志,或在项目之间切换,你一定很熟悉下面的流程:
- 重新打开终端窗口
- 重新连接主机
- 重新创建分割窗格
- 重新运行命令
- 重复以上步骤
我并不追求“酷炫的终端美学”。我想要的是 能够在日常使用中保持的工作区。
于是我在 macOS 上构建了一个简单、可重复的工作流:
- Ghostty – 终端 UI 层(原生 macOS 窗口/标签页,干净的配置)
- tmux – 状态层(会话/窗口/窗格,分离/附加,持久化)
再加上一个让整个设置实用的决定:tmux 只在 Ghostty 中自动启动——Terminal.app 保持干净。
小争议:标签页不是工作区
“为什么不直接使用终端标签页?”
标签页仅仅是一种视图;它们并不记录恢复信息。你的布局和运行时上下文仍然只能记在脑子里。
tmux 则不同。它有一个稳定的模型:会话 → 窗口 → 窗格。
- 支持分离/附加和长时间运行的会话
- 以键盘为先,跨机器保持一致
- 鼓励可重复的结构:每个项目一个会话,任务对应窗口
标签页固然好——我仍然使用 Ghostty 的标签页——但它们只是 UI 功能,而不是我的持久化策略。
我对设置的需求
1) 无摩擦的持久化
重新打开终端后继续:
- 相同的项目上下文
- 相同的命令仍在运行
- 相同的布局
2) 关注点分离
- 终端模拟器不应决定我如何管理会话。
- tmux 不应劫持我打开的每一个 shell。
因此我明确区分:
- Ghostty = 开发工作区
- Terminal.app = 默认系统 shell
3) 可复现性
一个“好设置”如果无法重新创建,那只是偶然的幸运。所有配置都放在仓库中:
- Ghostty 配置
- tmux 配置(+ TPM 插件)
- 一个 Zsh 代码片段,仅在 Ghostty 中自动启动 tmux
- 文档和使用说明
实际带来的好处
- 瞬间“回到工作” – 打开 Ghostty → 附加到
main→ 一切已就绪。 - 符合真实开发的工作流 – 每个项目一个会话,窗口用于后端/日志/基础设施,窗格用于快速分割。
- 降低认知负担 – 结构保持一致,你不必再想“我在哪儿运行的那个命令”。
- 轻松迁移 – 换新机器?克隆仓库,拷贝配置,安装 tmux,完成。
仓库内容
config/ghostty/config– Ghostty 配置(字体、键绑定、Option‑as‑Alt)config/tmux/tmux.conf– tmux 配置(窗口/窗格绑定、复制模式、插件)config/zsh/tmux-ghostty.zsh– 仅在 Ghostty 中自动启动 tmux 的脚本- 完整的 README,包含安装步骤和日常使用(会话/窗口/窗格)
Repo:
适合谁尝试
如果你:
- 每天运行多个开发服务器和监视器
- 保持 SSH 会话打开
- 在多个环境之间工作
- 想要持久化但又不想把 tmux 变成全局必需
如果你是“只用标签页,不用 tmux”的人——这也没问题。但如果你一周内已经三次重建相同的终端状态,tmux 看起来就不再是爱好,而是人体工学的需求。
结语
这个设置故意保持“无聊”:
- 最少的移动部件
- 可预测的行为
- 易于复现
如果你尝试了,欢迎分享你的工作区组织方式:
- 每个项目一个会话
- 所有项目共用一个会话
- 本地与远程分开会话
Repo: