Vim,tmuxでのセッション保存・復元
TL;DR
- tmux-plugins/tmux-resurrectはtmuxのセッションを保存・復元するためのtmux plugin.
- tpope/vim-obsessionはVimのセッションを保存・復元するためのVim plugin.
prefix C-s
でセッション保存,prefix C-r
でセッション復元.
About
tmuxはターミナル使いとしては必須のツールなんですが、PC毎再起動した時に元に戻すのが面倒だと思っていた。
tmuxinator使えよ、という話もあるのだが、あれ設定が若干面倒なのと設定した状態に戻す事しか出来ないんで、再起動の時に元の状態に戻る訳じゃない。
OSのアプデとかで再起動を強要されることも多々あるのでこういうの欲しいと思ってた.
僕は稼働中のプロジェクトごとにiTermのタブ作ってtmuxのセッションを立てているので,再起動するとそれを全部起動して回るのが非常につらい.
tmux-resurrectがあればそんな苦しみからも開放される.
起動中のプログラムなども保存できるし,vim-obsessionと連携させればVimのセッションも保存・復元可能になる.
これらのプラグインによって僕のようにQOLがめっちゃ向上する人もたくさんいそうな気がするので設定とかをここで共有しておく(元記事に被せるような形になっちゃってるのはすみません…).
みんなもtmuxとVimで論文書こう.
Configuration
tmux側
tmux-resurrectをインストールする..tmux.conf
に追記するだけ(tpmの利用推奨,参考: 【tmux】tpmでplugin管理 - Qiita).
.tmux.conf
set -g @tpm_plugins ' \ tmux-plugins/tpm \ tmux-plugins/tmux-resurrect \'set -g @resurrect-strategy-vim 'session'set -g @resurrect-processes 'irb pry "~rails server" "~rails console"'
run-shell '~/.tmux/plugins/tpm/tpm'
prefix + I
でインストールされる.
tpm_plugins
: 利用するプラグインのリスト(GitHubのrepo)@resurrect-strategy-vim
: がVimのセッションを読み出す設定@resurrect-processes
: 復活させるプロセスの設定(参考: Configuration - Tmux Resurrect).
Vim側
vim-obsessionをインストールするだけ.
.vimrc
NeoBundle 'tpope/vim-obsession'
Usage
- Vim
:mksession
(もしくは:mksession!
)でセッション保存Session.vim
に保存される
- tmux
prefix C-s
で保存- session,window,pane全て保存
- 設定によっては起動してるプログラムとかも保存される
prefix C-r
で復元tmux list-sessions
を確認するとセッションが復活してることがわかるtmux attach -t <target-session>
でattach可能
:mksession!
するのめっちゃ忘れそうな気がするので,定期的に実行してくれる何かが必要かもしれない.