Take Tmux Snapshots Automatically (2)
还记得本渣以前写的给tmux现场做备胎的脚本吗?其实后来本渣就没再去拓展这个脚本了,不是因为之前的脚本运行得够好不需要再改了,而是在写好那个脚本那年,有一个工具横空出世,让本渣觉得再也不用造轮子了——好了,不卖关子了,这个工具就是tmux的resurrect插件!
resurrect官方有一个使用录屏
Tmux Resurrect plugin from Bruno Sutic on Vimeo.
怎么样?狂拽酷炫屌!我们想要有的功能基本都有了吧!而且resurrect还部分支持恢复panel里运行的程序啊有木有!要知道这并不好实现,以前本渣写备胎脚本时也折腾过,当时还只能在恢复panel时给出上次运行程序的提示。
不过resurrect插件需要手动保存和恢复tmux现场,如果需要自动化的话,可以再配合continuum插件来使用。
好了,软文就写到这么多了,下面我们来看看如何安装使用。
首先查看tmux版本:
1 | |
resurrect插件需要tmux1.9以上的版本。如果你的版本低于1.9,那么升级是必须的,其实把tmux升级到1.9以上还是蛮推荐的。
这里推荐安装tpm (Tmux Plugin Manager)做tmux插件管理,再通过tpm安装continuum等插件:
1 | |
编辑~/.tmux.conf,在文件末尾加入以下几行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
如果你的默认shell是zsh,请把这句的注释去掉:
1 | |
如果你用的是Mac OSX,把这句的注释也去掉:
1 | |
这主要是tmux在OSX下水土不服(更详细的问题描述可以看这篇文章:Reattach-to-user-namespace: The Fix for Your Tmux in OS X Woes),需要用reattach-to-user-namespace黑科技,所以你最好也用MacPorts或者Homebrew装下这个工具:
1 | |
1 | |
在终端下执行以下命令更新tmux配置,运行tpm:
1 | |
最后在tmux下运行prefix + I(如果你没改键绑定的话就是<Ctrl>-b + <Shift>-i)安装插件。你还可以通过prefix + U(<Ctrl>-b + <Shift>-u)更新插件,用prefix + <Alt> + u删除插件。
安装完成之后,你可以在~/.tmux/plugins/里找到每个插件的代码目录。resurrect插件还有一个run_tests脚本用于检查是否安装正确,不过要运行这个脚本需要装上虚拟化神器vagrant。
如果安装正确,continuum插件会每隔15分钟产生一份备胎,我们也可以用prefix + <Ctrl>-s手动备份,用prefix + <Ctrl>-r手动恢复——vimer吐槽一记,这热键定义得好emacs风...
下面我们来看看resurrect插件产生的tmux环境备胎。在tmux环境备胎生成之后,在~/.tmux/resurrect/目录下就会有名为tmux_resurrect_$(date).txt的文本文件,同时会有一个叫last的软链接指向最新的tmux_resurrect_$(date).txt。那么这个神秘的txt文件里有啥呢?这里本渣随意贴上一份:
1 2 3 4 5 6 7 | |
啊哈,看起来思路和本渣之前脚本的思路差不多嘛!只不过resurrect插件记录的信息更详细,还做了键绑定。resurrect的代码也不难懂,如果你对它的实现感兴趣的话可以去阅读一下啦~