LoginSignup
6
5

More than 5 years have passed since last update.

Gitのブランチを元にセッション管理を行うgit-switcher.vimプラグインを作った話

Posted at

Vimのセッション管理には session.vim を使っていたのですが、Git管理下のディレクトリで上手い具合にセッションを扱おうとするには物足りなかったので、ブランチ毎のセッション管理を簡単に行う git-switcher.vim というプラグインを作りました。

インストール

お使いのプラグインマネージャでインストールするか、vim.org からプラグインをダウンロードして下さい。

vim-plug の場合

Plug 'ToruIwashita/git-switcher.vim'

使い方

Git管理下のディレクトリ上でVimを起動して、セッションを保存したくなったらGswSaveを実行しセッションを保存します。後はブランチを切り替える時にGswコマンドを使ってブランチを切り替えるだけです。
Gswコマンド実行時、切り替えるブランチにマッチするセッションが保存されている場合にブランチ切り替えに追随してセッションがロードされます。

また、Gswコマンドはデフォルトでブランチ切り替え時にセッションを保存するかの確認を行うので、GswSaveコマンドを使わずGswコマンドだけでもセッションの保持・復元を行えます。

git-switcher.vimサンプル

代表的なコマンドとオプションについて

コマンド

  • 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管理のディレクトリでなくともGswSaveGswLoadなどの一部のコマンドは動くようにしてあり、セッション管理は git-switcher.vim 一本でいけるようになっています。

良かったら使ってみて下さい。バグや要望などありましたら是非githubへの投稿お願いします。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5