In pratica, come posso passare rapidamente da una scheda all'altra?


126

In gnome-terminal, posso basta premere Alt+ ( 1, 2, 3, etc.) per passare alle schede specifiche. Posso anche usare Ctrl+ ( PgUp/ PgDn) per scorrere tra le schede (certamente meno conveniente, ma può essere rimappato).

Se voglio usare le schede vim invece delle schede gnome-terminal, digitare :tabned :tabpè abbastanza ingombrante. Potrei mapparli su scorciatoie da tastiera, ma è comunque molto meno conveniente che passare direttamente alla scheda 4 con Alt+ 4.

C'è un modo più veloce per passare da una scheda all'altra in vim?

Risposte:


210

Scheda successiva: gt

Scheda precedente: gT

Scheda numerata: nnngt


1
So che potrei scrivere nnn g t, ma voglio farlo rapidamente , ovvero Alt + nnno Ctrl + nnn. Ma Alt + nè già preso da gnome-terminal e il legame con Ctrl + nnon sembra avere alcun effetto.
Matteo,

6
Che dire di mappare i tasti funzione su nnn g t? Ad es :map <F2> 2gt. C'è il problema che <F1>è spesso mappato da GNOME alla sua funzione di aiuto. Oppure si potrebbe scegliere qualche tasto non si usa spesso in modalità normale, dire la virgola, e mappare in questo modo: :map , gt. Quindi 1,ti porterà alla scheda 1, 2,alla scheda 2 e così via.
garyjohn,

2
Ho trovato molto comodo usare '<' e '>'
Igor Stoppa il

Scorri verso il basso per una risposta migliore ..
Il Vivandiere

41

Perché non utilizzare il tuo leader (il mio leader è mappato su 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>

È possibile utilizzare le impostazioni seguenti per alternare tra la scheda corrente e l'ultima attiva (qui è mappata su Ctrl+ L, ovvero <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
È necessario au TabLeave * let g:lasttab = tabpagenr()per c-llavorare: stackoverflow.com/questions/2119754/...
Ciro Santilli新疆改造中心法轮功六四事件

1
Aggiungerei <leader>h/lper gTegt
Brenden,

25

Questo è il modo più semplice che ho trovato per passare da una scheda all'altra in modo più rapido e semplice.
Aggiungi le prossime righe al tuo .vimrc e divertiti, più trucchi sulle schede di VIM qui .

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

Ora puoi usare Ctrl per andare a sinistra e Ctrl per andare a destra.

O semplicemente usa:
1gtper andare alla scheda uno,
2gtper andare alla scheda due,
3gtper andare alla scheda tre, ecc ... ora hai l'idea.


Penso che questa sia la migliore risposta qui. Molto comodo da avere. Ho appena disabilitato le combinazioni di tasti di sistema in OS X per renderle indipendenti dal sistema.
Léo Léopold Hertz 준영

1
Usa i tasti freccia per rallentare. Li ho disabilitati
Chiedi e impara il

Sì ... La migliore risposta!
Il Vivandiere,

Purtroppo "Ctrl" mi ha dato problemi in vmplayer, quindi ho cambiato i tasti "Backspace" e "Enter".
Boris Däppen,

Utenti Mac: potrebbe essere necessario disattivare la missione di controllo scorciatoie da tastiera di default spazi: stackoverflow.com/questions/15719135/...
azatar

15

Dato che sono su un Mac e non utilizzo MacVim (ma semplicemente vim all'interno di un terminale) ho avuto qualche difficoltà con le combinazioni di tasti che non venivano inviate al terminale.

Il modo più compatibile (e per me più comodo) di cambiare scheda rapidamente viene dal sito Vim Wikia .

Inserisci nel tuo .vimrcfile:

nnoremap H gT
nnoremap L gt

Ora Shift-h(maiuscola) e Shift-l(L maiuscola) si passa rapidamente tra le schede, e segue la convenzione che he lcorrispondono a destra ea sinistra in vim su una tastiera QWERTY regolare.


Adoro questa soluzione, intuitiva e simile a vim. Non sono necessari tasti freccia.
Ivan Ivković,

Sono d'accordo. Una soluzione molto bella
j sad

questa è davvero una soluzione intuitiva. Grazie!
LeOn - Han Li,

2

(Sfortunatamente) vim usa anche CtrlPgDn/ PgUpper scorrere le schede. Dovrai utilizzare mapper mappare tabn/ tabpa qualcosa di utilizzabile.


2

Se stai usando gvim o simili (cioè qualcosa al di fuori del terminale), puoi imitare il gnome-terminalcomportamento che descrivi con:

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

Quindi alt-1salta alla prima scheda, ecc. Ma alt-9salta all'ultima scheda (come in Chrome).

Potresti voler racchiuderlo if has("gui_running")(anche se questo non sembra funzionare con Neovim) o inserirlo .gvimrc.


2

Aggiungili a .vimrc per abilitare i tasti di scelta rapida per la navigazione delle schede:

<ctrl-l> alternare tra le 2 schede più recenti;

<ctrl-j/k> vai all'ultima / successiva scheda;

<ctrl-t> apri una nuova scheda.

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


È possibile mappare <Ctrl> - <Tab> sull'ultima funzione della scheda di attivazione / disattivazione. Ci ho provato nnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>e vnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>senza fortuna.
zzeroo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.