清风的技术小屋

不为所动, 做更专业的自己

0%

保存和恢复Tmux会话

问题

使用Tmux时经常会遇到的一个问题,那就是系统重启时,Session会被清除,每次打开电脑都要重启建一个Session,然后创建一堆Window以及Pane,这极大地降低了Tmux使用效率,因此需要想一个办法能够保存Tmux的Session。

解决方案

该问题的解决方案是安装一个叫Tmux Resurrect的插件。Tmux要安装插件,可以通过Tmux Plugin Manager这个插件进行安装,该插件相当于一个插件管理系统,可以快速地安装、更新以及删除插件。

Tmux Plugin Manager

安装Tmux Plugin Manager插件可以参考该插件的GitHub:tmux-plugins/tpm。安装很简单,首先clone插件到本地

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

然后修改.tmux.conf,在文件最底部添加以下内容

1
2
3
4
5
6
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

重新加载配置文件

1
2
# type this in terminal if tmux is already running
$ tmux source ~/.tmux.conf

然后就可以在Tmux中使用快捷prefix + I(注意这里的I是大写)安装配置文件.tmux.conf中定义的插件了。

补充:

如果Tmux安装了gpakosz/.tmux,在文件.tmux.conf.local中配置好Tmux Plugin Manager后,在Tmux中使用prefix + I安装插件会没有效果,相关的讨论见“run '~/.tmux/plugins/tpm/tpm'” has no effect in .tmux.conf.local #61,具体的解决方案是用另一种写法写set -g @plugin,即将

1
2
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

改写为

1
2
3
4
set -g @tpm_plugins '          \
tmux-plugins/tpm \
tmux-plugins/tmux-sensible
'

解决方案来源于:Help, tpm not working!

Tmux Resurrect

安装好Tmux Plugin Manager后,就可以安装Tmux Resurrect插件(tmux-plugins/tmux-resurrect)了。在Tmux配置文件.tmux.conf中添加

1
set -g @plugin 'tmux-plugins/tmux-resurrect'

然后使用快捷键prefix + I就可以安装插件了。

保存和恢复

安装完Tmux Plugin Manager,就可以使用下面快捷键保存和恢复Session了。

  • prefix + Ctrl-s - save
  • prefix + Ctrl-r - restore

平常重启电脑后,首先在终端打开Tmux,然后使用prefix + Ctrl-r就可以恢复保存的Session了,如果有多个Session可以使用prefix + s来选择Session。

参考

  1. 保存和恢复 Tmux 会话