Scorciatoia per cambiare scheda in MacVim


16

Esistono delle scorciatoie per passare da una scheda all'altra in MacVim?

Schede MacVim

Eventuali suggerimenti per associare le scorciatoie a me stesso in .vimrc come ⌘ + 1 per la scheda 1 e ⌘ + 2 per la scheda 2. Ad esempio, come cambiare le schede del browser.

Risposte:


17

Poiché MacVim è un vero programma su Mac OS, è possibile mappare le schede cambiando allo stesso modo in cui si mappano i comandi in qualsiasi programma (di cui ho appena appreso personalmente di recente).

Apri Preferenze di Sistema, seleziona "Tastiera", quindi "Collegamenti alle applicazioni" (nel menu a sinistra). Nel menu a destra, fai clic sul segno più (+) per aggiungere un nuovo comando. Scegli MacVim per l'applicazione e, per il titolo del menu, digita "Seleziona scheda successiva" e scegli un collegamento (ho scelto Cmd + freccia destra). Quindi fai la stessa cosa per il comando "Seleziona scheda precedente".

"Seleziona scheda successiva" e "Seleziona scheda precedente" si trovano in MacVim nel menu "Finestra". Qualsiasi opzione visualizzata in uno dei menu di un'app può essere rimappata utilizzando questo metodo.


1
Poiché la domanda era su Macvim, questa soluzione è più bella. L'unica cosa è che quando vuoi portare il tuo .vimrc su altre macchine questo potrebbe non funzionare lì, ma preferisco ancora questo. Grazie.
sabertooth,

su windows / linux i mappa Alt + 1 ... 10 all'ordine di tabulazione. Sarebbe bello avere il comando + 1 vai alla prima scheda, come per ogni altra applicazione su Mac. Come posso farlo? Il menu è "Buffer >> <nomefile> (1)"
gcb

20

Puoi ovviamente cambiare le scorciatoie con le preferenze di sistema OSX per la tua tastiera come mostrato qui: Come rimappare qualsiasi scorciatoia da tastiera in Mac OS X

Alcuni potrebbero preferire farlo tramite il loro .vimrc:

if has("gui_macvim")
  " Press Ctrl-Tab to switch between open tabs (like browser tabs) to 
  " the right side. Ctrl-Shift-Tab goes the other way.
  noremap <C-Tab> :tabnext<CR>
  noremap <C-S-Tab> :tabprev<CR>

  " Switch to specific tab numbers with Command-number
  noremap <D-1> :tabn 1<CR>
  noremap <D-2> :tabn 2<CR>
  noremap <D-3> :tabn 3<CR>
  noremap <D-4> :tabn 4<CR>
  noremap <D-5> :tabn 5<CR>
  noremap <D-6> :tabn 6<CR>
  noremap <D-7> :tabn 7<CR>
  noremap <D-8> :tabn 8<CR>
  noremap <D-9> :tabn 9<CR>
  " Command-0 goes to the last tab
  noremap <D-0> :tablast<CR>
endif

1
Grazie, preferisco di gran lunga questa soluzione a quella selezionata perché uso command-right | left-arrow per andare alla fine / inizio delle righe!
Brian Underwood,

1
Come si fa a farlo funzionare in modalità inserimento?
Oliver Joseph Ash,

Questo è oltre bellissimo! Grazie! 🙏
Nik

12

Puoi selezionare la scheda successiva con + }e selezionare la scheda precedente con +{

Il tasto Maiusc è necessario non solo per premere un [invece di un }
Quindi il collegamento è + shift+ ]o + shift+ [
Questo collegamento funziona in molte app, ad esempio nel Terminale


Questo non è ciò che l'OP chiede ... la domanda era cambiare scheda in MacVim, non nel terminale
GESII

2
Ma questa è una scorciatoia da tastiera di MacVim. I tasti di comando non si traducono in terminal vim.
spoulson,

Sto usando MacVim e, come detto in questa soluzione, ha già i comandi da tastiera per cambiare scheda. Mi mancava semplicemente la chiave <kbd> Maiusc </kbd> quando facevo <kbd> ⌘ </kbd> + <kbd>} </kbd>.
Brettlyman,

5

Ho il seguente nel mio ~ / .vimrc per Linux. Dovresti essere in grado di cambiare la " <M-" sequenza in " <D-" per ottenere ciò che desideri:

" Meta+1-0 jumps to tab 1-10, Shift+Meta+1-0 jumps to tab 11-20:
let s:windowmapnr = 0
let s:wins='1234567890!@#$%^&*()'
while (s:windowmapnr < strlen(s:wins))
    exe 'noremap <silent> <M-' . s:wins[s:windowmapnr] . '> ' . (s:windowmapnr + 1) . 'gt'
    exe 'inoremap <silent> <M-' . s:wins[s:windowmapnr] . '> <C-O>' . (s:windowmapnr + 1) . 'gt'
    exe 'cnoremap <silent> <M-' . s:wins[s:windowmapnr] . '> <C-C>' . (s:windowmapnr + 1) . 'gt'
    exe 'vnoremap <silent> <M-' . s:wins[s:windowmapnr] . '> <C-C>' . (s:windowmapnr + 1) . 'gt'
    let s:windowmapnr += 1
endwhile
unlet s:windowmapnr s:wins

3

Oltre a creare le tue mappature, ci sono scorciatoie Vim integrate. Prova un numero seguito da gt. Ad esempio: 3gtti porta alla terza scheda. Puoi anche fare solo gtper andare alla scheda successiva ogT per passare a quella precedente.

(Da vim 7.something, le schede sono state inserite anche nella versione non gvim in modalità testo.)


Perfetto! Il modo vim nativo per farlo; Grazie.
GESii
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.