Vim の terminal window でサッと別のタブに移動したい
※本記事は Vim Advent Calendar の記事ではありません
忙しいと文章書くの面倒になりますね。箇条書きでつらつらと書きます。
- タブ移動 (
gt,gT) は terminal window ではフォーカスを奪われるので使えない - terminal window でも普通のバッファでも使えるように
<C-w>gt,<C-w>gTがある (追加された?) - ただこれは
gt,gTと違って{count}を受け取れない {count}<C-w>gtは Vim の仕様上無理そうなので<C-w>{count}gtで {count} 個右のタブに移動したい- それがこちら
" <C-w>{count}gt, <C-w>{count}gT function! s:setup_jump_tab_mappings() abort for [mode, cmds] in [['t', ['gt', 'gT']], ['n', ['gt', 'gT']]] for cmd in cmds execute printf('%snoremap <C-w>1%s <C-w>%s', mode, cmd, cmd) execute printf('%smap <C-w>2%s <C-w>%s<C-w>1%s', mode, cmd, cmd, cmd) execute printf('%smap <C-w>3%s <C-w>%s<C-w>2%s', mode, cmd, cmd, cmd) execute printf('%smap <C-w>4%s <C-w>%s<C-w>3%s', mode, cmd, cmd, cmd) execute printf('%smap <C-w>5%s <C-w>%s<C-w>4%s', mode, cmd, cmd, cmd) execute printf('%smap <C-w>6%s <C-w>%s<C-w>5%s', mode, cmd, cmd, cmd) execute printf('%smap <C-w>7%s <C-w>%s<C-w>6%s', mode, cmd, cmd, cmd) execute printf('%smap <C-w>8%s <C-w>%s<C-w>7%s', mode, cmd, cmd, cmd) execute printf('%smap <C-w>9%s <C-w>%s<C-w>8%s', mode, cmd, cmd, cmd) endfor endfor endfunction call s:setup_jump_tab_mappings()
{count}は 1-9 までですが普段使いで特に問題になることはなさそう- YATTA〜
追記:2019/12/20 17:20
gT, <C-w>gT 押しづらいなと今更ながら思ったので gw, <C-w>gw で使えるようにしました。
" Use gw instead of gT nnoremap gw gT nnoremap <C-w>gw <C-w>gT tnoremap <C-w>gw <C-w>gT
最初の設定もこんな感じに修正。
" <C-w>{count}gt, <C-w>{count}gw -> <C-w>{count}gT function! s:setup_jump_tab_mappings() abort for [mode, cmds] in [ \ ['t', [#{lhs: 'gt', rhs: 'gt'}, #{lhs: 'gw', rhs: 'gT'}]], \ ['n', [#{lhs: 'gt', rhs: 'gt'}, #{lhs: 'gw', rhs: 'gT'}]], \] for cmd in cmds execute printf('%snoremap <C-w>1%s <C-w>%s', mode, cmd.lhs, cmd.rhs) execute printf('%smap <C-w>2%s <C-w>%s<C-w>1%s', mode, cmd.lhs, cmd.lhs, cmd.lhs) execute printf('%smap <C-w>3%s <C-w>%s<C-w>2%s', mode, cmd.lhs, cmd.lhs, cmd.lhs) execute printf('%smap <C-w>4%s <C-w>%s<C-w>3%s', mode, cmd.lhs, cmd.lhs, cmd.lhs) execute printf('%smap <C-w>5%s <C-w>%s<C-w>4%s', mode, cmd.lhs, cmd.lhs, cmd.lhs) execute printf('%smap <C-w>6%s <C-w>%s<C-w>5%s', mode, cmd.lhs, cmd.lhs, cmd.lhs) execute printf('%smap <C-w>7%s <C-w>%s<C-w>6%s', mode, cmd.lhs, cmd.lhs, cmd.lhs) execute printf('%smap <C-w>8%s <C-w>%s<C-w>7%s', mode, cmd.lhs, cmd.lhs, cmd.lhs) execute printf('%smap <C-w>9%s <C-w>%s<C-w>8%s', mode, cmd.lhs, cmd.lhs, cmd.lhs) endfor endfor endfunction call s:setup_jump_tab_mappings()