vim
Commandes en mode normal (édition)
Recherche…
Introduction - Note rapide sur le mode normal
En mode normal, les commandes peuvent être saisies par des combinaisons de touches directes (en tapant u pour annuler le dernier changement, par exemple). Ces commandes sont souvent équivalents en mode « ex », accessible en tapant deux points: qui vous dépose dans une mémoire tampon de ligne individuelle au bas de la fenêtre Vim.
En mode 'ex', après avoir tapé les deux points, vous tapez un nom de commande ou son abréviation suivi de la touche Entrée pour exécuter la commande. Alors,: undo
Entrez comme u accomplit tapant directement la même chose en mode normal.
Vous pouvez voir que les commandes directes seront souvent plus rapides (une fois apprises) que les commandes «ex» pour une édition simple, mais pour être complet, si possible dans la documentation qui suit, si les deux sont disponibles, les deux seront affichés.
La plupart de ces commandes peuvent également être précédées d'un décompte en préfixant ou en intercalant un nombre. Si vous tapez 3dd en mode normal, par exemple, vous supprimez trois lignes (en commençant par la position actuelle du curseur).
Annulation et rétablissement de base
annuler
Commander | : | La description |
---|---|---|
tu | u , undo | Annuler le changement le plus récent |
5u | Annuler les cinq changements les plus récents (utilisez n'importe quel nombre) |
Sachez que dans Vim, le «changement le plus récent» varie selon le mode dans lequel vous vous trouvez. Si vous entrez en mode d'insertion ( i ) et que vous tapez un paragraphe entier avant de revenir au mode normal ( Esc ), ce paragraphe entier est considéré comme le changement le plus récent.
Refaire
Commander | : | La description |
---|---|---|
Ctrl-R | red , redo | Refaire le dernier changement annulé |
2Ctrl-R | Refaire les deux dernières modifications annulées (utilisez n'importe quel nombre) |
Il existe un autre moyen d’annuler et de rétablir des modifications dans Vim qui sont traitées un peu différemment. Lorsque vous annulez une modification avec u , vous effectuez une sauvegarde des noeuds sur une "arborescence" de vos modifications et en appuyant sur Ctrl-R , vous redescendez ces noeuds dans l'ordre. (L'arbre d'annulation est un sujet distinct et trop complexe à aborder ici.)
Vous pouvez également utiliser U (c'est-à-dire majuscule) pour supprimer toutes les dernières modifications sur une seule ligne (la ligne sur laquelle vos dernières modifications ont été apportées). Cela ne traverse pas les nœuds de l’arbre de la même manière que u . Utiliser U compte en fait comme un changement lui-même - un autre nœud en avant sur l’arborescence - de sorte que si vous appuyez une seconde fois sur U immédiatement après le premier, il agira comme une commande Redo.
Chacun a ses usages, mais u / : undo
devrait couvrir la plupart des cas simples.
Répéter le dernier changement
La commande Répéter, exécutée avec la touche point ou point ( . ), Est plus utile qu’elle n’apparaît d’abord. Une fois appris, vous vous retrouverez à l'utiliser souvent.
Commander | : | La description |
---|---|---|
. | Répéter le dernier changement | |
dix. | Répétez le dernier changement 10 fois |
Donc, pour un exemple très simple, si vous apportez une modification à la ligne 1 en tapant i I
Esc, le résultat est le suivant:
1 I made a mistake
2 made a mistake
3 made a mistake
Votre curseur sera à la position 1 de la ligne 1 et tout ce que vous devez faire pour corriger les deux lignes suivantes est d'appuyer sur j. deux fois - c'est-à-dire j pour descendre une ligne et . répéter le dernier changement, qui était l'ajout du I
Pas besoin de revenir en mode Insertion deux fois pour corriger ces lignes.
Il devient beaucoup plus puissant lorsqu'il est utilisé pour répéter des macros .
Copier, couper et coller
Dans Vim, ces opérations sont traitées différemment de ce que vous pourriez être habitué dans presque tous les autres éditeurs ou traitements de texte modernes ( Ctrl-C , Ctrl-X , Ctrl-V ). Pour comprendre, vous devez en savoir un peu plus sur les registres et les mouvements.
Remarque: cette section ne couvre pas la copie en mode visuel et le découpage ou le découpage de gamme car ceux-ci dépassent le cadre du mode normal et de l'édition de base.
Registres
Vim utilise le concept de registres pour gérer le texte en mouvement dans le programme lui-même. Windows dispose d'un seul presse-papiers à cet effet, analogue à un seul registre dans Vim. Lors de la copie, de la découpe et du collage dans Vim, il existe des moyens d'utiliser un workflow d'édition aussi simple (sans penser aux registres), mais il existe également des possibilités beaucoup plus complexes.
Un registre est ciblé pour l’entrée / sortie d’une commande en préfixant la commande avec " et un nom en minuscule.
Les motions
Un mouvement dans Vim est une commande qui déplace la position du curseur ailleurs. Lors de la copie, de la découpe et du collage en mode normal, les possibilités de sélection de texte pour le mouvement ne sont limitées que par votre connaissance des mouvements. Quelques-uns seront illustrés ci-dessous.
Copier et couper
Les commandes de base copier et couper sont construites sur y ('yank', pour copier) et d ('delete', pour couper). Vous verrez les similitudes dans le tableau suivant.
Commander | : | La description |
---|---|---|
y {mouvement} | Copier («yank») le texte indiqué par le mouvement dans le registre par défaut | |
yy | Copiez la ligne courante dans le registre par défaut, linewise | |
Y | Copiez la ligne actuelle dans le registre par défaut (synonyme de yy ) | |
"ayiw | Copie le mot sur lequel se trouve le curseur pour enregistrer 'a' | |
20 "byy | Copier vingt lignes, en commençant par le curseur, dans le registre 'b' | |
d {motion} | Couper («supprimer») le texte indiqué par le mouvement dans le registre par défaut | |
dd | Couper la ligne courante dans le registre par défaut, linewise | |
ré | Couper du curseur à la fin de la ligne dans le registre par défaut (PAS un synonyme de dd ) | |
"adiw | Couper le mot sur lequel se trouve le curseur pour enregistrer 'a' | |
20 "bdd | Couper vingt lignes, en commençant par le curseur, dans le registre 'b' |
Remarque: quand quelque chose est copié ou coupé linewise, le comportement de la pâte ci - dessous se placer du texte avant ou après la ligne en cours (plutôt que le curseur). Les exemples suivent pour clarifier.
Coller
Il y a plusieurs façons de coller dans Vim, selon ce que vous essayez d'accomplir.
Commander | : | La description |
---|---|---|
p | Collez ce qui est dans le registre par défaut après le curseur | |
P | Collez ce qui est dans le registre par défaut avant le curseur | |
"ap | Collez le contenu du registre 'a' après le curseur | |
"cp | Collez le contenu du registre 'c' avant le curseur |
Alors, comment effectuer une coupe et un collage vraiment simples?
Si j'ai le texte suivant:
1 This line should be second
2 This line should be first
Je peux faire le simple copier-coller en plaçant mon curseur quelque part sur la ligne 1 et en tapant ddp . Voici les résultats:
1 This line should be first
2 This line should be second
Qu'est-il arrivé? dd 'Coupe la première ligne (ligne par ligne) dans le registre par défaut - qui ne contiendra qu'une seule chose à la fois, comme le presse-papier de Windows - et p colle la ligne après celle qui vient d'être modifiée à cause de la commande dd .
Voici un exemple pas aussi simple. Je dois déplacer quelques mots. (Ceci est artificiel et inutile, mais vous pouvez appliquer ce principe à des morceaux de code plus importants.)
1 These words order out are of
Je peux répéter w pour arriver au 'o' au début de 'order' (ou b si je l'ai juste tapé et réalisé mon erreur).
Alors "adaw mettre" ordre "dans le registre" a ".
Alors w pour arriver au 'a' dans 'sont'.
Après cela, je tapez "bdaw pour mettre 'sont' dans le registre 'b'.
1 These words out of
Pour être clair, maintenant "order" est dans le registre "a" et "are" dans le registre "b", comme deux presse-papiers séparés.
Pour arranger les mots correctement, je tape b pour accéder au 'o' dans 'out', puis «bP pour mettre 'are' du registre 'b' devant 'out':
1 These words are out of
Maintenant, je tape A pour arriver à la fin de la ligne, suivi de Space Esc (en supposant qu'il n'y ait pas d'espace après «of») et «ap pour mettre« order »à l'endroit où il appartient.
1 These words are out of order
Achèvement
L'achèvement peut être utilisé pour faire correspondre les mots utilisés dans un document. Lors de la saisie d'un mot, Ctrl p ou Ctrl n correspondra aux mots précédents ou suivants du document.
Cela peut même être combiné avec le mode Ctrl-X pour compléter des lignes entières. Par exemple, tapez quelque chose comme:
This is an example sentence.
puis allez à la ligne suivante et commencez à taper la même phrase:
Thi
puis appuyez sur Ctrl p pour obtenir:
This
Maintenant, toujours en mode insertion, appuyez sur Ctrl x Ctrl p et le mot suivant sera terminé, ce qui donnera:
This is
Continuez à appuyer sur Ctrl x Ctrl p jusqu'à ce que toute la ligne soit terminée.
Si vous savez que vous souhaitez compléter un type de ligne complet, procédez comme suit:
This is an example sentence.
puis sur le prochain type de ligne:
Thi
et appuyez sur x Ctrl l pour terminer la ligne.
Si la finalisation est un nom de fichier, Ctrl x Ctrl f peut être utilisé pour compléter ce répertoire. Type:
~/Deskt
puis appuyez sur Ctrl x Ctrl f et:
~/Desktop
sera complété (si à cet endroit). Ctrl x Ctrl f peut alors être utilisé à plusieurs reprises pour répertorier les fichiers sur le bureau.