Wie kann ich in vim schnell zwischen Registerkarten wechseln?

126

In Gnom-terminal, kann ich drücken Sie einfach Alt+ ( 1, 2, 3usw.) auf spezifisch Tabs zu wechseln. Ich kann auch Ctrl+ ( PgUp/ PgDn) verwenden, um durch die Registerkarten zu blättern (das ist zwar weniger praktisch, kann aber neu zugeordnet werden).

Wenn ich vim-Registerkarten anstelle von gnome-terminal-Registerkarten verwenden möchte, tippe ich :tabnund das :tabpist ziemlich umständlich. Ich könnte sie Tastaturkürzeln zuordnen, aber das ist immer noch viel weniger praktisch, als direkt mit Alt+ zu Tab 4 zu springen 4.

Gibt es eine schnellere Möglichkeit, in vim zwischen Registerkarten zu wechseln?

Matthew
quelle

Antworten:

209

Nächster Reiter: gt

Vorheriger Tab: gT

Nummerierte Registerkarte: nnngt

vergänglich
quelle
1
Ich weiß, dass ich tippen könnte nnn g t, aber ich möchte es schnell tun , dh Alt + nnnoder Ctrl + nnn. Wird Alt + naber schon von gnome-terminal übernommen und Bindung an Ctrl + nscheint keine Wirkung zu haben.
Matthew
6
Was ist mit der Zuordnung von Funktionstasten zu nnn g t? ZB :map <F2> 2gt. Es gibt das Problem, das <F1>GNOME häufig seiner Hilfefunktion zuordnet. Oder Sie könnten einige Schlüssel wählen Sie oft nicht im normalen Modus verwenden, sagen Sie das Komma, und wo es wie folgt aus : :map , gt. Dann gelangen 1,Sie zu Tab 1, 2,Tab 2 und so weiter.
Garyjohn
2
Ich fand es sehr praktisch, '<' und '>' zu verwenden
Igor Stoppa
Scrollen Sie nach unten, um eine bessere Antwort zu erhalten.
The Vivandiere
41

Warum nicht von deinem Anführer Gebrauch machen (auf den mein Anführer abgebildet ist 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>

Sie können die folgenden Einstellungen verwenden, um zwischen der aktuellen und der zuletzt aktiven Registerkarte umzuschalten (hier ist sie dem Ctrl+ zugeordnet L, dh <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>
nicht möglich
quelle
2
Sie müssen au TabLeave * let g:lasttab = tabpagenr()für c-ldie Arbeit: stackoverflow.com/questions/2119754/...
Ciro Santilli新疆改造中心法轮功六四事件
1
Ich würde <leader>h/lfür gTund hinzufügengt
Brenden
25

Dies ist der einfachste Weg, den ich gefunden habe, um schneller und einfacher zwischen Registerkarten zu wechseln.
Fügen Sie Ihrem .vimrc die nächsten Zeilen hinzu und genießen Sie es. Weitere Tricks zu vim-Registerkarten finden Sie hier .

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

Jetzt können Sie verwenden Ctrl , um nach links und Ctrl nach rechts zu gehen.

Oder benutzen Sie einfach:
1gtum zu Tab eins
2gtzu gehen, um zu Tab zwei
3gtzu gehen, um zu Tab drei zu gehen, etc ... jetzt haben Sie die Idee.

Arnold Gandarillas
quelle
Ich denke das ist die beste Antwort hier. Sehr bequem zu haben. Ich habe gerade diese System-Tastenkombinationen in OS X deaktiviert, um sie systemunabhängig zu machen.
Léo Léopold Hertz 준영
1
Verwenden Sie die Pfeiltasten, um langsamer zu werden. Ich habe sie deaktiviert
Ask and Learn
Yup ... Beste Antwort!
Die Vivandiere
Leider gab mir "Ctrl" Probleme im vmplayer, so dass ich zu den Tasten "Backspace" und "Enter" wechselte.
Boris Däppen
Mac-Benutzer: Möglicherweise müssen Sie die standardmäßigen Tastenkombinationen für Mission Control- Bereiche
azatar
15

Da ich auf einem Mac bin und MacVim nicht verwende (sondern nur Vim innerhalb eines Terminals), hatte ich einige Schwierigkeiten, wenn Tastenkombinationen nicht an das Terminal gesendet wurden.

Die für mich am besten kompatible (und bequemste) Methode zum schnellen Wechseln von Tabs ist die Vim Wikia-Site .

Platzieren Sie in Ihrer .vimrcDatei:

nnoremap H gT
nnoremap L gt

Jetzt Shift-h(Kapital H) und Shift-l(Kapital L) werden Sie schnell zwischen den Tabs wechseln, und folgt der Konvention, hund lauf einer regelmäßigen QWERTZ - Tastatur nach links und rechts in vim entsprechen.

Stefan Magnuson
quelle
Ich liebe diese Lösung, intuitiv und vim-like. Keine Pfeiltasten benötigt.
Ivan Ivković
Genau. Eine sehr schöne Lösung
j traurig
Das ist wirklich eine intuitive Lösung. Danke!
LeOn - Han Li
2

(Leider) benutzt vim CtrlPgDn/ auch, PgUpum durch Tabs zu blättern. Sie müssen verwenden map, um tabn/ tabpauf etwas Verwendbares abzubilden .

Ignacio Vazquez-Abrams
quelle
2

Wenn Sie gvim oder ähnliches verwenden (dh etwas außerhalb des Terminals), können Sie das von gnome-terminalIhnen beschriebene Verhalten imitieren mit:

" 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>

So alt-1springt auf das erste Register, etc. Aber alt-9springt auf den letzten Reiter (wie in Chrome).

Vielleicht möchten Sie dies if has("gui_running")einpacken (obwohl dies bei Neovim nicht zu funktionieren scheint) oder einfügen .gvimrc.

Joe Freeman
quelle
2

Fügen Sie diese zu .vimrc hinzu, um die Tastenkombinationen für die Tabulatornavigation zu aktivieren:

<ctrl-l> Umschalten zwischen 2 neuesten Registerkarten;

<ctrl-j/k> gehe zum letzten / nächsten Tab;

<ctrl-t> öffne einen neuen Tab.

" 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>

Mengqi Ji
quelle
Ist es möglich, <Strg> - <Tab> der letzten Umschaltfunktion zuzuordnen? Ich habe es versucht nnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>und vnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>ohne Glück.
Zzeroo