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'
第三步:安装并使用插件
- 在 tmux 中按
Ctrl+a,再按r,刷新配置。 - 按
Ctrl+a,再按Shift+i,让 TPM 安装插件。 - 需要保存现场时,按
Ctrl+a,再按Ctrl+s。 - 需要恢复时,进入 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