vimでは、どのようにしてタブをすばやく切り替えることができますか?


126

GNOME端末では、私はちょうど押すことができAlt(+ 123特定のタブに切り替える、等)。また、Ctrl+(PgUp/ PgDn)を使用してタブを切り替えることもできます(明らかに便利ではありませんが、再マップできます)。

私はvimのタブの代わりに、gnome-terminalのタブ、タイピングを使用したい場合:tabn:tabp、非常に面倒です。それらをキーボードショートカットにマッピングすることもできますが、それはAlt+でタブ4に直接ジャンプするよりもはるかに不便4です。

vimのタブを切り替えるより速い方法はありますか?

回答:


209

次のタブ: gt

前のタブ: gT

番号付きタブ: nnngt


1
私は私が入力することができることを知っているnnn g tが、私はそれをやりたい素早く、すなわちAlt + nnnCtrl + nnn。しかしAlt + n、すでにgnome-terminalによって使用されており、バインドCtrl + nしても効果がないようです。
マシュー

6
ファンクションキーのマッピングはどうnnn g tですか?例えば、:map <F2> 2gt<F1>GNOMEによってヘルプ機能にマッピングされることが多い問題があります。または、通常モードで頻繁に使用しないキー(カンマなど)を選択して、次のようにマッピングできます:map , gt。次に1,、タブ1、2,タブ2などに移動します。
ゲイリージョン

2
「<」と「>」を使用すると非常に便利だとわかった
イゴールストップパ

より良い答えを下にスクロールして...
ヴィヴァンディエール

41

リーダーを活用してみませんか(私のリーダーはにマッピングされていますSpace):

" Go to tab by number
noremap <leader>1 1gt
noremap <leader>2 2gt
noremap <leader>3 3gt
noremap <leader>4 4gt
noremap <leader>5 5gt
noremap <leader>6 6gt
noremap <leader>7 7gt
noremap <leader>8 8gt
noremap <leader>9 9gt
noremap <leader>0 :tablast<cr>

以下の設定を使用して、現在のタブと最後のアクティブなタブを切り替えることができます(ここでは、Ctrl+ Lにマッピングされています、つまり<c-l>)。

" Go to last active tab

au TabLeave * let g:lasttab = tabpagenr()
nnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>
vnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>

2
あなたは必要とするau TabLeave * let g:lasttab = tabpagenr()ためにc-l動作するように:stackoverflow.com/questions/2119754/...
チロSantilli新疆改造中心法轮功六四事件

1
私は追加したい<leader>h/lためgTgt
Brenden

25

これは私が見つけた最も簡単な方法で、タブをより速く簡単に切り替えることができます。
.vimrcに次の行を追加してお楽しみください。vimタブについてのコツはこちらです。

nnoremap <C-Left> :tabprevious<CR>
nnoremap <C-Right> :tabnext<CR>

これで、Ctrl Ctrl に移動して右に移動できます。

または
1gt、タブ1
2gtに移動する、タブ2
3gtに移動する、タブ3に移動する、などを使用します。


ここが最良の答えだと思います。とても便利です。システムを独立させるために、OS Xでこれらのシステムキーバインドを無効にしました。
レオレオポルドヘルツ

1
矢印キーを使用すると、速度が低下します。私はそれらを無効にしている
に問い合わせて、学び

うん...ベストアンサー!
ヴィヴァンディエール16

悲しいことに「Ctrl」を押すとvmplayerで問題が発生したため、「Backspace」キーと「Enter」キーに変更しました。
ボリスDäppen17年

Macユーザー:デフォルトのMission Controlスペースのキーボードショートカットを無効にする必要がある場合があります:stackoverflow.com/questions/15719135/…–
azatar

15

私はMacを使用していて、MacVimを使用していません(ただし、ターミナル内のプレーンなvim)ので、キーの組み合わせがターミナルに送信されないという問題がありました。

タブをすばやく切り替える最も互換性のある(そして私にとって最も快適な)方法は、Vim Wikiaサイトにあります。

あなたの中に置き.vimrc、ファイル:

nnoremap H gT
nnoremap L gt

Shift-h(資本H)及びShift-l(資本L)タブ間をすばやくを切り替えて、その大会は以下になるhl、通常のQWERTYキーボード上のvimの中で左右に対応します。


このソリューションは直感的でvimに似ています。矢印キーは必要ありません。
イヴァン・イコビッチ

同意する。非常に良い解決策
j sad

これは本当に直感的なソリューションです。ありがとうございました!
レオン


2

gvimなどを使用している場合(つまり、ターミナルの外部にあるもの)、gnome-terminal説明する動作を模倣できます。

" Map alt-x keys to jump to a tab
for i in range(1, 8)
  execute "nmap \<M-" . i . "> " . i . "gt"
endfor
nmap <M-9> :tablast<CR>

したがってalt-1、最初のタブなどにalt-9ジャンプします。ただし、Chromeのように最後のタブにジャンプします。

これをif has("gui_running")(Neovimでは機能しないように思われるかもしれませんが)ラップするか、これをに入れ.gvimrcます。


2

これらを.vimrcに追加して、タブナビゲーションホットキーを有効にします。

<ctrl-l> 最新の2つのタブを切り替えます。

<ctrl-j/k> 最後/次のタブに移動します。

<ctrl-t> 新しいタブを開きます。

" tab navigation: Alt or Ctrl+Shift may not work in terminal: " http://vim.wikia.com/wiki/Alternative_tab_navigation " Tab navigation like Firefox: only 'open new tab' works in terminal nnoremap <C-t> :tabnew<CR> inoremap <C-t> <Esc>:tabnew<CR> " move to the previous/next tabpage. nnoremap <C-j> gT nnoremap <C-k> gt " Go to last active tab au TabLeave * let g:lasttab = tabpagenr() nnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr> vnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>


<Ctrl>-<Tab>を最後のトグルタブ機能にマッピングすることは可能ですか?私は試してみましたがnnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>vnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>運はありません。
zzeroo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.