tmux中保持布局

让 tmux 布局可恢复的两条路线:会话存档恢复,或固定布局的一键启动。

#type / howto #status / evergreen #tech / dev #resource / tmux

[!info] related notes

tmux中保持布局

太有那味了布局

tmux 的会话默认只在当前机器运行期间存在。只要机器重启、WSL 退出,或者 tmux server 被杀掉,布局和运行中的 TUI 程序就需要重新恢复。

这里保留两条思路:

  • 方案一:用 tmux-resurrect 保存和恢复当前现场
  • 方案二:用脚本固定生成一个干净、可重复的标准布局

如果你更希望“用 YAML 把布局声明式管理”,看 tmuxinator

方案一:使用 tmux-resurrect 插件

这个方案适合你希望“离开时是什么样,下次回来还是什么样”。

第一步:安装 TPM

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

第二步:在 ~/.tmux.conf 末尾追加插件配置

# 插件管理
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# 保存和恢复会话
set -g @plugin 'tmux-plugins/tmux-resurrect'

# 告诉 resurrect 需要恢复哪些程序
set -g @resurrect-processes 'nvim opencode'

# TPM 初始化必须放最后
run '~/.tmux/plugins/tpm/tpm'

第三步:安装并使用插件

  1. 在 tmux 中按 Ctrl+a,再按 r,刷新配置。
  2. Ctrl+a,再按 Shift+i,让 TPM 安装插件。
  3. 需要保存现场时,按 Ctrl+a,再按 Ctrl+s
  4. 需要恢复时,进入 tmux 后按 Ctrl+a,再按 Ctrl+r

这个方案的优点是恢复“当前状态”很自然;缺点是对复杂 TUI 的恢复稳定性依赖具体程序和插件。

方案二:写一个一键启动脚本

如果你的目标不是恢复“昨天的现场”,而是每次进入项目时都快速得到一个固定布局,那么脚本通常更稳定。

例如,为某个项目写一个 ~/dev-biome.sh

nano ~/dev-biome.sh

脚本示例:

#!/bin/bash

# 设置项目路径和 Session 名字
PROJECT_DIR="$HOME/project/digital-biome"
SESSION_NAME="dev-biome"

if ! tmux has-session -t "$SESSION_NAME" 2>/dev/null; then
  # 1. 创建 Session,并在左侧窗格启动 nvim
  tmux new-session -d -s "$SESSION_NAME" -n "editor" -c "$PROJECT_DIR"
  tmux send-keys -t "$SESSION_NAME":0 "nvim" C-m

  # 2. 右上角启动命令面板 / AI 助手
  tmux split-window -h -p 40 -c "$PROJECT_DIR" -t "$SESSION_NAME":0
  tmux send-keys -t "$SESSION_NAME":0.1 "opencode" C-m

  # 3. 右下角保留给 Git、服务、日志
  tmux split-window -v -p 40 -c "$PROJECT_DIR" -t "$SESSION_NAME":0.1
  tmux send-keys -t "$SESSION_NAME":0.2 "clear" C-m

  # 4. 焦点回到编辑器
  tmux select-pane -t "$SESSION_NAME":0.0
fi

tmux attach-session -t "$SESSION_NAME"

给脚本执行权限:

chmod +x ~/dev-biome.sh

之后直接运行:

~/dev-biome.sh

什么时候选哪种方案

  • 你想恢复“上次具体干到哪” -> tmux-resurrect
  • 你想每次进入项目都生成同样的干净布局 -> 启动脚本
  • 你想把布局交给配置文件统一管理 -> tmuxinator
创建于 2026/2/23 更新于 2026/5/27