很多终端设置看起来很高效……直到你重启机器

发布: (2025年12月15日 GMT+8 23:00)
5 min read
原文: Dev.to

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:

Back to Blog

相关文章

阅读更多 »

我的 Dev 工具列表 2025

TL;DR  macOS bash AeroSpace 窗口管理器 brew install --cask nikitabobko/tap/aerospace 核心工具 brew install atuin chezmoi gh fzf eza bat ripgrep st…

Git-Scope 用户指南

介绍 Git‑Scope 是一个用于本地 Git 仓库的终端仪表板。无需 cd 进文件夹来检查状态。扫描你的项目并实时查看…

让 macOS 更易忍受

请提供您希望翻译的文章摘录或摘要文本,我才能为您进行简体中文翻译。