Vimのセッション管理には session.vimを使っていたのですが、Git管理下のディレクトリで上手い具合にセッションを扱おうとするには物足りなかったので、ブランチ毎のセッション管理を簡単に行う git-switcher.vimというプラグインを作りました。
インストール
お使いのプラグインマネージャでインストールするか、vim.orgからプラグインをダウンロードして下さい。
vim-plugの場合
Plug 'ToruIwashita/git-switcher.vim'
使い方
Git管理下のディレクトリ上でVimを起動して、セッションを保存したくなったらGswSave
を実行しセッションを保存します。後はブランチを切り替える時にGsw
コマンドを使ってブランチを切り替えるだけです。Gsw
コマンド実行時、切り替えるブランチにマッチするセッションが保存されている場合にブランチ切り替えに追随してセッションがロードされます。
また、Gsw
コマンドはデフォルトでブランチ切り替え時にセッションを保存するかの確認を行うので、GswSave
コマンドを使わずGsw
コマンドだけでもセッションの保持・復元を行えます。
代表的なコマンドとオプションについて
コマンド
Gsw[!] <branch-name>
作業ブランチを切り替えます。切り替え時にブランチと同名のセッションが保存されていた場合は同時にそのセッションをロードします。また、切り替え時に対象のブランチがローカルに存在しない場合は、新しいブランチを作成して切り替えます。GswRemote[!] <branch-name>
リモートリポジトリにあるブランチをローカルリポジトリにcheckout
します。その時、取得したブランチと同名のセッションが保存されている場合は、同時にそのセッションをロードします。GswSave [session-name]
現在の作業ブランチ名でセッションを保存します。引数を与えた場合は与えられた文字列をセッション名として保存します。GswLoad [session-name]
現在の作業ブランチ名のセッションを復元します。引数を与えた場合は与えられた文字列をセッション名として復元します。GswDeleteSession[!] <session-name>
指定されたセッションを削除します。GswDeleteSessionsIfBranchNotExist[!]
保存したセッションのうちローカルに同名のブランチが存在しないものを削除します。
オプション
# セッションを保存するディレクトリパス。
g:gsw_sessions_dir = $HOME.'/.cache/vim/git_switcher'
# Gswコマンド実行時にセッションの保存の確認を行う。デフォルトはyes。
g:gsw_save_session_confirm = 'yes'
# vim起動時のセッション自動ロード設定。yes、no、confirmを設定可能でデフォルトはno。
g:gsw_autoload_session = 'no'
# vim起動時保存したセッションのうちローカルに同じ名前のブランチが存在しないものを削除する。yes、no、confirmを設定可能でデフォルトはno。
g:gsw_autodelete_sessions_if_branch_not_exist = 'no'
最後に
git-switcher.vim はGitのブランチを元にセッション管理を行うプラグインですが、通常のセッションの管理を session.vim、git関連のセッション管理を git-switcher.vim というように併用して使っていくのは微妙だったので、Git管理のディレクトリでなくともGswSave
やGswLoad
などの一部のコマンドは動くようにしてあり、セッション管理は git-switcher.vim 一本でいけるようになっています。
良かったら使ってみて下さい。バグや要望などありましたら是非githubへの投稿お願いします。