Tmux Resurrect 无须任何配置,就能够备份 tmux 会话中的各种细节,包括窗口、面板的顺序、布局、工作目录,运行程序等等数据。因此它能在系统重启后完全地恢复会话。由于其幂等的恢复机制,它不会试图去恢复一个已经存在的窗口或者面板,所以,即使你不小心多恢复了几次会话,它也不会出现问题,这样主动恢复时我们就不必担心手抖多按了一次。另外,如果你是 tmuxinator 用户,我也建议你迁移到 tmux-resurrect 插件上来,具体请参考 Migrating from tmuxinator
。
Tmux Resurrec 安装过程如下所示:
1 | cd ~/.tmux |
安装后需在 ~/.tmux.conf
中增加一行配置:
1 | run-shell ~/.tmux/plugins/tmux-resurrect/resurrect.tmux |
至此安装成功,按下 prefix + r
重载 tmux 配置。
Tmux Resurrec 提供如下两个操作:
- 保存,快捷指令是
prefix
+Ctrl + s
,tmux 状态栏在保存开始,保存后分别提示”Saving…”,”Tmux environment saved !”。 - 恢复,快捷指令是
prefix
+Ctrl + r
,tmux 状态栏在恢复开始,恢复后分别提示”Restoring…”,”Tmux restore complete !”。
保存时,tmux 会话的详细信息会以文本文件的格式保存到 ~/.tmux/resurrect
目录,恢复时则从此处读取,由于数据文件是明文的,因此你完全可以自由管理或者编辑这些会话状态文件(如果备份频繁,记得定期清除历史备份)。
可选的配置
Tmux Resurrec 本身是免配置开箱即用的,但同时也提供了如下选项以便修改其默认设置。
1 | set -g @resurrect-save 'S' # 修改保存指令为S |
默认情况下只有一个保守的列表项(即 vi vim nvim emacs man less more tail top htop irssi mutt
)可以恢复,对此 Restoring programs doc 解释了怎么去恢复额外的项目。
进阶的备份
除了基础备份外,Tmux Resurrec 还提供进阶的备份功能,如下所示:
- 恢复 vim 和 neovim 会话
- 恢复面板内容
- 恢复 shell 的历史记录(实验性功能)
进阶的备份功能默认不开启,需要特别配置。
1)恢复 vim 和 neovim 会话,需要完成如下两步:
通过 vim 的 vim-obsession 插件保存 vim/neovim 会话。
1
2
3cd ~/.vim/bundle
git clone git://github.com/tpope/vim-obsession.git
vim -u NONE -c "helptags vim-obsession/doc" -c q在
~/.tmux.conf
中增加两行配置:1
2set -g @resurrect-strategy-vim 'session' # for vim
set -g @resurrect-strategy-nvim 'session' # for neovim
2)恢复面板内容,需在 ~/.tmux.conf
中增加一行配置:
1 | set -g @resurrect-capture-pane-contents 'on' # 开启恢复面板内容功能 |
目前使用该功能时,请确保 tmux 的 default-command
没有包含 &&
或者 ||
操作符,否则将导致 bug。(查看 default-command
的值,请使用命令 tmux show -g default-command
。)
3)恢复 shell 的历史记录,需在 ~/.tmux.conf
中增加一行配置:
1 | set -g @resurrect-save-shell-history 'on' |
由于技术的限制,保存时,只有无前台任务运行的面板,它的 shell 历史记录才能被保存。