📝
Vimでタブを閉じたときに左側のタブを開く
Vimで:tabeditすると新しいタブが右側に開くが、
:tabcloseすると元々いたタブの右側のタブが開く。
これを閉じたタブの左にあったタブが開かれるようにしたい。
つまり| 1 | 2 | 3 |のようにタブがあって、2を閉じたら3ではなく1を開く。
1で作業中に2を開いて閉じたら1の作業に戻りたいことが多い。
実装
以下のようにautocmdで実現できる。
let s:after_tab_leave = v:false
augroup activate_left_tab
autocmd!
autocmd TabEnter * let s:after_tab_leave = v:false
autocmd TabLeave * let s:after_tab_leave = v:true
autocmd TabClosed * call s:activate_left(expand('<afile>'))
augroup END
function! s:activate_left(tab_number) abort
let current = tabpagenr()
if s:after_tab_leave && current != 1 && current == a:tab_number
tabprevious
endif
endfunction
少し意外なことにTabClosedだけでは実現できない。
-tabcloseや+tabcloseなど今いるタブ以外を閉じる方法があるため、
TabClosedの前にTabLeaveが起きているかを確認する必要がある。
一応同じ機能をプラグインとして管理している (これはNeovim用)
感想
タブを閉じるキーマッピングを差し替えるタイプの方法と異なり、
タブで開いた:terminalの終了時にも元のタブに戻れるのが嬉しい。
寿命の短いタブを多用する人間なので地味に快適になった。
Discussion