tig-explorer.vimの使い方
Vim用のGitクライアントが欲しかった
vimのGitプラグインとして何を使っているのが多いだろうか?
自分の観測範囲ではfugitiveを使っている人が多いようだ。
しかし、ターミナルではCUIツールで高速なプレビューの出来るtig
をGitクライアントとして利用している人は多いのではないだろうか。
vimでもtigが使いたい。そんな人(自分)のためにvim pluginを作成した。
tig-explorer.vim
tig-explorer.vimはtig
をvimから扱うプラグイン。
tig
の機能でdiff上からe
キーを押下すると任意のエディタで該当箇所を開く事が出来るが、このプラグインを使うと、vimからtig
を呼び出すことが出来る。
tig
を開き、差分をチェックして、そこから再びvimで開くことが出来る。
また、vim
からtig
を呼び出すには!tig
コマンドをvimのコマンドモードから呼び出すことでも同じことが実現でも可能だが、
プロセスがvim
-tig
-vim
-tig
-vim
のようにどんどんネストしてしまう。
このプラグインを経由してエディタで開く場合は親のvimプロセスで開くため、vim上のbuffer移動やhistory、yankが途切れることがない。
また、vimからtig
に行番号やファイル名を渡せるので、↓のコマンドが格段に扱いやすくなる。
-
tig FILEPATH
で閲覧中のファイルの履歴を見る(:TigOpenCurrentFile
) -
tig grep PATTERN PATH
でプレビューしてから開く(:TigGrep
) -
tig blame FILEPATH
で現在のファイル履歴を行単位で見る(:TigBlame
)
tig-explorer.vimのカスタマイズ
.vimrcの記述例
" tigを開く
nnoremap <Leader>t :TigOpenProjectRootDir<CR>
" 現在のファイルの履歴を見る
nnoremap <Leader>T :TigOpenCurrentFile<CR>
" パターンでtig grepする
nnoremap <Leader>g :TigGrep<CR>
" tig grepした内容を再呼び出しする
nnoremap <Leader>r :TigGrepResume<CR>
" 選択中のキーワードでtig grepする
vnoremap <Leader>g y:TigGrep<Space><C-R>"<CR>
" カーソル下のキーワードでtig grepする
nnoremap <Leader>cg :<C-u>:TigGrep<Space><C-R><C-W><CR>
" 現在のカーソル位置でtig blameする
nnoremap <Leader>b :TigBlame<CR>
また、このプラグインの特徴的なところでtig上でCtrl-t
を押下するとvimのタブで開く機能が追加されている。
同様にCtrl-s
で水平分割、 Ctrl-v
で垂直分割出来る。
tig
上のvimを開くキーバインドの動的に追加していて、下記がデフォルトの設定値。
let g:tig_explorer_keymap_edit = '<C-o>'
let g:tig_explorer_keymap_tabedit = '<C-t>'
let g:tig_explorer_keymap_split = '<C-s>'
let g:tig_explorer_keymap_vsplit = '<C-v>'
↑ .vimrc
上でtig-explorer.vim
から開いた際にのみ利用可能なキーバインドが定義できる
得意な専任のCUIツールに任せる
なんでもvimにやらせようとするのではなく、専任のツールにまかせてしまえばCUIでもVimでも操作感は変わらず、vimに任せるよりも体験が良い場合が多々ある。
同じコンセプトでranger-explorer.vimというrangerをデフォルトファイラとして扱うvimプラグインもあるのでぜひ試してみて欲しい。