Vimでタブページの位置を変更する

Vimでバッファーごとにタブページを開くみたいなヌルい使い方をしているみなさんこん○○は。タブページを適当に開きまくるとたまに整理してやらないとごちゃごちゃになるので、簡単に位置を変えられないかなーとタブページのヘルプをちゃんと読んだら:tabmoveというまんまなコマンドでできることがわかった。

ただ:tabmoveは引数として正の整数しか受け取れないので、-1で左に動かすとかそういう相対的な移動はできない。1で1つ右に、-1で1つ左にループして動かせるようなラッパー関数を書いて使うことにした。

" Move tabpage
function! s:MoveTabpage(num)
  if type(a:num) != type(0)
    return
  endif

  let pos = tabpagenr() - 1 + a:num
  let tabcount = tabpagenr("$")

  if pos < 0
    let pos = tabcount - 1
  elseif pos >= tabcount 
    let pos = 0
  endif

  execute "tabmove " . pos
endfunction

" TabMove: Move tabpage with reltive number
command! -nargs=1 TabMove :call <SID>MoveTabpage(<f-args>)

nnoremap <C-S-Right> :call <SID>MoveTabpage(1)<Return>
nnoremap <C-S-Left>  :call <SID>MoveTabpage(-1)<Return>

そんなに使うわけではないけど悪くはなさそう。