Raccourci pour changer d'onglet dans MacVim

16

Existe-t-il des raccourcis pour basculer les onglets de l'un à l'autre dans MacVim?

Onglets MacVim

Tous les conseils pour lier moi-même les raccourcis dans .vimrc comme ⌘ + 1 pour l'onglet 1 et ⌘ + 2 pour l'onglet 2. Par exemple, comme changer d'onglet de navigateur.

Ye Lin Aung
la source

Réponses:

17

Étant donné que MacVim est un programme réel sur Mac OS, vous pouvez mapper la commutation d'onglets de la même manière que vous mappez les commandes dans n'importe quel programme (que je viens d'apprendre personnellement récemment).

Ouvrez les Préférences Système, sélectionnez "Clavier", puis "Raccourcis d'application" (dans le menu de gauche). Dans le menu de droite, cliquez sur le signe plus (+) pour ajouter une nouvelle commande. Choisissez MacVim pour l'application et pour le titre du menu, tapez "Sélectionner l'onglet suivant" et choisissez un raccourci (j'ai choisi Cmd + flèche droite). Faites ensuite la même chose pour la commande "Sélectionner l'onglet précédent".

"Sélectionner l'onglet suivant" et "Sélectionner l'onglet précédent" se trouvent dans MacVim sous le menu "Fenêtre". Toute option que vous voyez dans l'un des menus d'une application peut être remappée à l'aide de cette méthode.

DevDaddyNick
la source
1
Puisque la question concernait Macvim, cette solution est plus agréable. La seule chose est que lorsque vous souhaitez porter votre .vimrc sur d'autres machines, cela peut ne pas fonctionner là-bas, mais je préfère toujours cela. Merci.
sabertooth
sous windows / linux, je mappe Alt + 1 ... 10 dans l'ordre de tabulation. Ce serait bien d'avoir la commande + 1 aller dans le premier onglet, comme c'est le cas pour toutes les autres applications sur Mac. Quoi qu'il en soit pour faire ça? Le menu pour cela est "Buffer >> <nomfichier> (1)"
gcb
20

Vous pouvez bien sûr modifier les raccourcis avec les préférences système OSX pour votre clavier, comme indiqué ici: Comment remapper n'importe quel raccourci clavier sous Mac OS X

Certains pourraient préférer le faire via leur .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
cseelus
la source
1
Merci, je préfère de beaucoup cette solution à celle choisie car j'utilise la commande-droite | flèche gauche pour aller à la fin / début des lignes!
Brian Underwood
1
Comment pourrait-on faire fonctionner cela en mode insertion?
Oliver Joseph Ash
C'est au-delà du beau! Merci! 🙏
Nik
12

Vous pouvez sélectionner l'onglet suivant avec + }et sélectionner l'onglet précédent avec +{

La touche Maj est nécessaire pour non seulement frapper un [au lieu d'un }
donc le raccourci est + shift+ ]ou + shift+ [
Ce raccourci fonctionne dans de nombreuses applications, c'est-à-dire dans le terminal

Masolino
la source
Ce n'est pas ce que l'OP demande ... la question était de changer d'onglet dans MacVim, pas sur le terminal
JESii
2
Mais c'est un raccourci clavier MacVim. Les touches de commande ne se traduisent pas en terminal vim.
spoulson
J'utilise MacVim et comme mentionné dans cette solution, il a déjà des commandes clavier pour changer d'onglet. Il me manquait simplement la touche <kbd> Maj </kbd> lors de l'exécution de <kbd> ⌘ </kbd> + <kbd>} </kbd>.
brettlyman
5

J'ai ce qui suit dans mon ~ / .vimrc pour Linux. Vous devriez pouvoir changer la " <M-" séquence en " <D-" pour obtenir ce que vous voulez:

" 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
Heptite
la source
3

En plus de créer vos propres mappages, il existe des raccourcis vim intégrés. Essayez un nombre suivi de gt. Par exemple: 3gtvous amène au 3e onglet. Vous pouvez également faire simplement gtpour passer à l'onglet suivant, ou gTpour passer au précédent.

(Depuis vim 7. quelque chose, les onglets ont été intégrés même dans la version non-gvim en mode texte.)

murftown
la source
Parfait! La façon native de vim de le faire; Merci.
JESii