Hatena::Groupvim

タブページ関連の操作

タブページ関連の操作

Vim 7からタブページが追加されたが、デフォルトのキー操作はgtや<C-w>gfくらいしか用意されておらず、使い辛い。

という訳で便利に使うための設定を皆で書き綴ってはどうか、というキーワード




id:ka-nacht

"" 基本
" ウィンドウに対するデフォルトのmapと似たような感じにする。

  " プレフィックスとして<C-t>を使う。
  " ただし<C-t>はデフォルトでタグスタックの移動に割り当てられているので、
  " そちらには代替のキーを割り当てておかないと困る。
nnoremap <C-t>  <Nop>

nnoremap <silent> <C-t>n  :<C-u>tabnew \| tabmove<Return>
nnoremap <silent> <C-t>c  :<C-u>tabclose<Return>
nnoremap <silent> <C-t>o  :<C-u>tabonly<Return>

nmap <C-t><C-n>  <C-t>n
nmap <C-t><C-c>  <C-t>c
nmap <C-t><C-o>  <C-t>o


"" タブページ間の移動

nnoremap <silent> <C-t>j  :<C-u>execute 'tabnext' 1 + (tabpagenr() + v:count1 - 1) % tabpagenr('$')<Return>
nnoremap <silent> <C-t>k  :<C-u>execute 'tabprevious' v:count1<Return>
nnoremap <silent> <C-t>K  :<C-u>tabfirst<Return>
nnoremap <silent> <C-t>J  :<C-u>tablast<Return>

nmap <C-t><C-j>  <C-t>j
nmap <C-t><C-k>  <C-t>k
nmap <C-t><C-t>  <C-t>j

  " GNU screenっぽく番号指定で移動。
  " Vim的にはタブページは1番から数えるが、敢えて0番から数えるようにしている。
for i in range(10)
  execute 'nnoremap <silent>' ('<C-t>'.(i))  ((i+1).'gt')
endfor
unlet i


"" タブページそのものの移動

nnoremap <silent> <C-t>l  :<C-u>execute 'tabmove' min([tabpagenr() + v:count1 - 1, tabpagenr('$')])<Return>
nnoremap <silent> <C-t>h  :<C-u>execute 'tabmove' max([tabpagenr() - v:count1 - 1, 0])<Return>
nnoremap <silent> <C-t>L  :<C-u>tabmove<Return>
nnoremap <silent> <C-t>H  :<C-u>tabmove 0<Return>

nmap <C-t><C-l>  <C-t>l
nmap <C-t><C-h>  <C-t>h