Comment remapper gg en g?

8

Je n'en utilise pas g combinationssauf ggen mode normal. Comment puis-je faire en sorte qu'une gseule pression suffira?

nnoremap g ggle fait attendre pendant environ 3 secondes la poursuite de la commande. La démappage gpréalable ne fonctionne pas non plus, car je ne peux pas mapper ggsi je démappe g. Dois-je démapper toutes les combinaisons qui ne le sont pas gg?

Peret Finctor
la source
7
Ce n'est pas parce que vous n'utilisez aucun gmappage maintenant que vous n'en utiliserez plus à l'avenir. Il y en a quelques-uns plutôt pratiques là-dedans. par exemple gE, g_, gt, gT, g,, g;, gu, gU, gn, et mon favori personnellement gf. Voir :h gpour une liste de tous les mappages g.
Peter Rincker
Oh oui, gf est génial. Mais je n'en ai pas besoin si souvent en ce moment. Je vais peut-être le déplacer vers un raccourci clavier distinct lorsque j'en aurai besoin. (Nos noms sont tellement hilarants, je me demande si j'ai regardé le vôtre lorsque j'ai choisi le mien).
Peret Finctor
Et je veux que vim et less se comportent de la même manière, si possible. Moins utilise un seul g.
Peret Finctor
3
J'utilise probablement gvtoutes les 90 secondes environ
the_velour_fog
1
Il existe également des plugins dont les mappages par défaut commencent par g, comme gcdans les commentaires . Vous devez également considérer que vous manquerez de clés si vous continuez à utiliser Vim pendant une longue période, et qu'il faut un certain temps / effort pour entraîner votre mémoire musculaire après vous être habitué à une cartographie donnée.
mMontu

Réponses:

22

En supposant que vous disposez d'une version plus récente de Vim (7.3.1261+), vous pouvez utiliser <nowait>

nnoremap <nowait> g gg

Cependant, je ne peux pas souligner l'utilité de certains gmappages. Voici une courte liste de gmappages utiles :

  • gE - mouvement de fin de mot en arrière
  • g_ - jusqu'au dernier caractère non vide d'une ligne
  • gt& gT- navigation par onglets
  • g,& g;- aller et venir dans la liste des modifications
  • gu& gU- changement de cas
  • gn - sélectionner visuellement le motif actuel
  • gv - resélectionner la sélection visuelle précédente
  • gi - démarrer le mode d'insertion dans la même position Le dernier mode d'insertion a été arrêté
  • gf - aller au fichier sous le curseur (mon favori personnel)

Voir :h gpour une liste de tous les gmappages.

Personnellement, j'apprendrais simplement à l'utiliser ggcar c'est une bonne habitude et moins n'est pas connu pour être un bon émulateur Vi / Vim.

Pour plus d'aide, voir:

:h g
:h :map-nowait
Peter Rincker
la source
9
giest également assez fantastique (passez en mode insertion là où vous l'aviez précédemment laissé). Je l'utilise tout le temps quand je suis en train de taper une ligne de code et que je dois aller vérifier quelque chose ailleurs dans le fichier.
Poignée de porte
1
Oui. C'est comme les gens qui mappent wvers :w<CR>et qvers :qall<CR>parce que c'est "plus rapide". Vous vous privez simplement des avantages de vim.
wchargin
@WChargin oh, donc je ne suis pas le premier. En savez-vous plus sur ce type de remaps, pouvez-vous me rediriger vers ces personnes?
Peret Finctor
2
@PeretFinctor Je ne sais pas si vous plaisantez - mon point est que ces types de remaps sont de très mauvaises idées. Les gens qui font cela essaient simplement d'utiliser vim comme un éditeur ordinaire; w, qet gtous offrent des fonctionnalités extrêmement étendues que vous devez utiliser fréquemment lors de l'édition, mais que vous supprimez pour raser des fractions de seconde lorsque vous enregistrez. Je ne sais pas pour vous, mais j'économise beaucoup moins souvent que je n'avance un mot!
wchargin
1
@PeretFinctor: Pourquoi n'utilisez-vous pas w / W et b / B pour le mot en avant et le mot en arrière, comme le propose Vim dès le départ? - Vous voyez le motif ici? Vous essayez de lutter avec Vim. Déplacez-vous avec lui, utilisez les choses qu'il fournit telles qu'elles sont fournies. Ce sera plus facile de cette façon et plus bénéfique pour votre flux de travail à long terme.
DevSolar
7

Juste pour jouer, si vous voulez vraiment vraiment une seule clé - vous pouvez toujours utiliser ... une autre (c'est-à-dire une clé dont vous n'avez pas besoin autant)! De cette façon, vous pouvez laisser le gpréfixe utile seul.

Par exemple, vous pouvez "surcharger" 0pour basculer entre 0et ^fonctionnalité, lorsque vous appuyez à plusieurs reprises, et libre à la ^place pour votre utilisation (car il s'agit d'un caractère de montée intuitif ).

Je suis sûr que ce n'est pas parfait, mais voici une possible preuve de concept rapide et sale:

function! ToStartOrNonBlankToggle(mode)
    if (a:mode == 'x')
        normal! gv
    endif
    let sp = col('.')
    normal! ^
    let ep = col('.')
    if (sp == ep)
        normal! 0
    endif
endfunction

nnoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('n')<cr>
onoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('o')<cr>
xnoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('x')<cr>
noremap <silent> ^ gg

Ce qui précède permet toujours d'utiliser 0 comme mouvement, ainsi que du mode visuel. Sur une ligne en retrait, y0copierait désormais de la position du curseur vers le premier caractère non vide. Si vous souhaitez copier dans la colonne de démarrage à la place, vous devrez aller visuel:v00y

Vous pouvez maintenant également utiliser 13^pour passer à la ligne 13.

VanLaser
la source
1
C'est en fait une très bonne idée, merci!
Peret Finctor