📝
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