71 votes

Utilisation de la touche g en mode normal de vim

Dans le mode normal de vim, l'option g Le préfixe est utilisé pour un certain nombre de commandes. Certaines commandes Allez sur quelque part dans le document, mais d'autres commandes traitent des encodages de fichiers et de la permutation des majuscules et des minuscules.

  • ga - montrer l'encodage des caractères
  • 10gg - passez à la ligne 10
  • gg - aller à la ligne 1
  • gH - start Sélectionner le mode ligne
  • gr {char} - remplacement virtuel de N caractères par {char}.

Quel est le lien manquant entre toutes ces commandes ?

7 votes

g et z étendre l'ensemble normal des commandes.

3 votes

J'ai toujours pris les deux g et z comme @Benoit : " g{C} a été défini parce qu'il s'agit d'une commande couramment utilisée, mais d'autres caractères sont déjà liés". De nombreux sites g* ont un moyen mnémotechnique go to / global et d'autres non. Contrairement à g* z* Les commandes qui ne sont pas liées aux plis sont plus difficiles à retenir pour moi. J'ai même personnellement défini dans l'un de mes plugins un jeu de commandes gd mappings qui peuvent être mémorisés en tant que global diff : "voir toutes les modifications apportées par la révision donnée". Et près d'avoir un ensemble de "aller à" : gu - "aller à l'utilisateur" - "voir les modifications apportées par l'utilisateur" et ainsi de suite.

2 votes

La commande pour aller à la ligne 10 est 10gg ou 10G (ou :10<cr> ).

57voto

progo Points 6247

Il n'y a pas de plus grand lien avec g -commandes : c'est un mélange hétérogène. C'est un préfixe facile et les clés non liées commençaient à disparaître, donc les cartes moins utilisées ont trouvé une bonne place derrière g .

0 votes

J'ai remarqué que certaines commandes ont des mnémoniques dans l'aide de Vim. Par exemple, ga est get ascii

3 votes

@NatanYellin : oui. Heureusement, certaines commandes sous g sont des choses "à faire" ou "à obtenir", mais trop d'entre elles sont dépourvues d'un bon moyen mnémotechnique.

3 votes

@SauceMcBoss : Je cherchais justement la même chose. Vous pouvez le trouver la documentation de Vim

15voto

BigMike Points 3443

Vous parlez tout simplement de deux choses différentes. Dans certains cas, g est l'abréviation de "global" (pour la commande range par exemple), pour le déplacement de ligne, le g correspond à goto.

Dans le VIM, les commandes sont souvent raccourcies pour une utilisation plus rapide.

:help global peut aider

Entre parenthèses : pour la navigation par ligne, j'ai toujours utilisé la fonction :<lineno> la syntaxe.

2 votes

:<lineno> spamme l'historique de la ligne de commande et est plus difficile à taper ( <S-;>1<CR> : quatre pressions sur les touches, deux ou trois (dvorak) mouvements supplémentaires des doigts (l'effort utilisé pour taper le chiffre est ignoré), 1gg : trois pressions sur les touches, un déplacement du doigt). Vous pouvez vous débarrasser de l'historique de la ligne de commande en définissant un certain mappage (par exemple, le mappage de <CR> en mode ligne de commande qui effacera l'historique après avoir exécuté la commande), mais vous ne pouvez pas faire l'effort de taper ce moins.

0 votes

Oh bien, essayez de substituer <lineno> avec un nombre et vous obtiendrez ce que j'essayais de dire ^^ :D. En fin de compte, c'est juste une question sur la façon dont vous avez commencé tout. Venant de vanilla vi, certains intrinsèques de VIM sont totalement obscurs même après plus de 10 ans de vimming heureux.

0 votes

"oh bien, essayez de substituer <lineno> avec un nombre et vous obtiendrez ce que j'essayais de dire" : " <S-;>1<CR> " ci-dessus. Je connais cette méthode, bien que je l'aie généralement vue dans une expression du type execute linenumber .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X