Différences entre versions de « Vi / Vim »
(38 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 8 : | Ligne 8 : | ||
</pre> | </pre> | ||
− | Après | + | Après l’appui sur la touche entrer, le prompt disparaît pour laisser place à une série de tilde (~) qui indiquent que les lignes sont vides. |
== Les modes == | == Les modes == | ||
− | Il y a deux | + | === Permutation === |
+ | |||
+ | Il y a deux modes dans vi: | ||
* le mode saisie; | * le mode saisie; | ||
* le mode commande. | * le mode commande. | ||
Ligne 20 : | Ligne 22 : | ||
* la touche ''Echap'' permet de revenir au mode commande. | * la touche ''Echap'' permet de revenir au mode commande. | ||
− | Lorsque l'on est en mode insertion un nouvel | + | Lorsque l'on est en mode insertion un nouvel appui sur la touche ''insert'' permet de passer en mode ''replace'' (remplacement). |
+ | |||
+ | === Répétitions === | ||
+ | |||
+ | <pre> | ||
+ | n<commande> | ||
+ | </pre> | ||
+ | |||
+ | Par exemple ''dd'' efface une ligne et ''5dd'' efface 5 lignes | ||
== Quitter... == | == Quitter... == | ||
=== ...en sauvant === | === ...en sauvant === | ||
− | Lorsque l'on a fini d'éditer son fichier texte on peut le sauver en repassant en mode commande (touche ''Echap'') et en tapant: | + | Lorsque l'on a fini d'éditer son fichier texte, on peut le sauver en repassant en mode commande (touche ''Echap'') et en tapant: |
<pre> | <pre> | ||
:wq | :wq | ||
</pre> | </pre> | ||
− | + | ou bien | |
<pre> | <pre> | ||
:x | :x | ||
</pre> | </pre> | ||
− | + | ou encore en appuyant deux fois sur la touche ''Z'' (deux ''Z'' majuscules) | |
=== ...en abandonnant les modifications === | === ...en abandonnant les modifications === | ||
− | Si on a fait une erreur et que l'on veut quitter sans sauver on peut le faire en repassant en mode commande (touche ''Echap'') et en tapant: | + | Si l'on a fait une erreur et que l'on veut quitter sans sauver, on peut le faire en repassant en mode commande (touche ''Echap'') et en tapant: |
<pre> | <pre> | ||
:q! | :q! | ||
Ligne 43 : | Ligne 53 : | ||
= Éditer = | = Éditer = | ||
− | + | == Undo == | |
+ | |||
+ | ''u'' permet de défaire une modification | ||
+ | |||
+ | == Repeat == | ||
+ | ''.'' permet de répéter la dernière commande d’édition | ||
− | + | == Effacer == | |
− | |||
− | |||
− | |||
+ | * ''x'' permet d’effacer le caractère courant | ||
− | *''c'' permet d’effacer le texte | + | *''c'' permet d’effacer le texte et de passer en mode insertion: |
− | **''cw'' → change jusqu’à la fin du mot | + | **''cw'' → change du curseur jusqu’à la fin du mot |
**''c$'' → change jusqu’à la fin de la ligne | **''c$'' → change jusqu’à la fin de la ligne | ||
**''cc'' → change la ligne courante | **''cc'' → change la ligne courante | ||
+ | |||
+ | == Couper == | ||
+ | |||
+ | *''d'' permet de couper grâce à l’appui de: | ||
+ | **''dw'' → coupe du curseur jusqu’à la fin du mot | ||
+ | **''dd'' → coupe la ligne complète | ||
+ | **''d$'' → coupe du curseur à la fin de la ligne | ||
+ | **''d^'' → coupe du curseur au premier caractère non vide (pas une tabulation ou un espace) | ||
+ | **''d0'' → coupe du curseur jusqu’au début de la ligne | ||
+ | |||
+ | == Copier == | ||
+ | y permet de copier grâce à l’appui de: | ||
+ | *''yw'' → copie du curseur à la fin du mot (''nyw'' copie les n mots) | ||
+ | *''yy'' ou ''Y'' → (yank) copie la ligne courante dans le buffer (''nyy'' copie les n lignes) | ||
+ | *''y0'' → copie du curseur jusqu’au début de la ligne | ||
+ | |||
+ | == Coller == | ||
+ | *''p'' → colle les lignes copiées en dessous du curseur | ||
+ | *''P'' → colle les lignes copiées au-dessus du curseur | ||
+ | |||
+ | == Suppressions == | ||
+ | === Dans tout le fichier === | ||
+ | *''g/^#/d'' → permet de supprimer les lignes commençant par ''#'' | ||
+ | *''g/^$/d'' → permet de supprimer les lignes vides (sans espace ni tabulation) | ||
+ | |||
+ | === Sur la ligne === | ||
+ | *''dfX'' → permet de supprimer du curseur jusqu'au caractère X | ||
+ | *''dtX'' → permet de supprimer du curseur jusqu'au caractère X non inclue | ||
+ | |||
+ | == Insertion == | ||
+ | * ''o'' → permet d'insérer une ligne en-dessous du curseur | ||
+ | * ''O'' → permet d'insérer une ligne au-dessus du curseur | ||
+ | |||
+ | == Remplacements == | ||
+ | === Au niveau fichier === | ||
+ | *'':s/toto/titi/g'' → permet de remplacer toutes les occurrences (grâce au ''/g'') de ''toto'' par ''titi'' sur la ligne du curseur | ||
+ | *'':%s/toto/titi/g'' → permet de remplacer toutes les occurrences (grâce au ''/g'') de ''toto'' par ''titi'' dans tout le document (grâce au ''%'') | ||
+ | *'':1,5/toto/titi/g'' → permet de remplacer toutes les occurrences (grâce au ''/g'') de ''toto'' par ''titi'' de la ligne 1 à la ligne 5 (grâce au ''1,5'') | ||
+ | |||
+ | === Au niveau curseur === | ||
+ | *''x'' → permet de supprimer le caractère sur le curseur | ||
+ | *''rX'' → permet de remplacer le caractère sur le curseur par X | ||
+ | *''R'' → permet de passer en mode remplacement | ||
+ | |||
+ | =Placements = | ||
+ | === Dans la globalité du fichier === | ||
+ | *''A'' → permet de placer le curseur en mode ''insert'' à la fin de la ligne courante | ||
+ | *'':X'' ou ''XG'' → permet de se déplacer à la ligne X du fichier | ||
+ | *''G'' → permet de se déplacer à la fin du fichier | ||
+ | *''``'' → permet de revenir à la position précédente | ||
+ | |||
+ | === Sur la partie présente à l'écran === | ||
+ | *''H'' → déplace le curseur à la première ligne visible à l'écran (''HOME'') | ||
+ | *''M'' → déplace le curseur au milieu de l'écran (''MIDDLE'') | ||
+ | *''L'' → déplace le curseur à la dernière ligne visible à l'écran (''LAST'') | ||
+ | *''zz'' → centre l'écran sur le curseur | ||
+ | |||
+ | === Sur la ligne === | ||
+ | *''W'' → déplace le curseur sur le mot suivant sans tenir compte de la ponctuation | ||
+ | *''w'' → déplace le curseur sur le mot suivant | ||
+ | *''B'' → déplace le curseur sur le mot précédent sans tenir compte de la ponctuation | ||
+ | *''b'' → déplace le curseur sur le mot précédent | ||
+ | |||
+ | *''^'' → déplace le curseur sur le premier caractère non vide (pas une tabulation ou un espace) | ||
+ | *''0'' → déplace le curseur au début de la ligne | ||
+ | *''$'' → déplace le curseur à la fin de la ligne | ||
+ | |||
+ | == Recherche == | ||
+ | *''/coucou'' → permet de placer le curseur sur la prochaine occurrence de ''coucou'' | ||
+ | * ''n'' → permet de passer à l'occurence suivante (''next'') | ||
+ | |||
+ | *''fX'' permet de recherche le caractère X en avant en appuyant sur '';'' | ||
+ | *''FX'' permet de recherche le caractère X en arrière en appuyant sur '';'' | ||
+ | |||
+ | =Astuces= | ||
+ | == Exécution == | ||
+ | *''!'' → permet d’exécuter une commande depuis vi, cela démarrera un Shell interactif. | ||
+ | *'':sh'' → permet de passer l’éditeur de texte en arrière plan pour avoir un shell et ''ctrl+d'' permet de le reprendre | ||
+ | |||
+ | == Récupération == | ||
+ | Si le système crash, il est possible de récupérer les changements grâce à l'option ''-r'' (''recovery'') de ''vi'' : | ||
+ | <pre> | ||
+ | # vi -r <mon_fichier> | ||
+ | </pre> |
Version actuelle datée du 28 novembre 2023 à 15:22
Introduction
Création d'un fichier texte
vi ou vim (alias sous CentOS) est un éditeur en mode console peu convivial certes, mais ultra puissant et qui s'utilise de la manière suivante:
vi <nom_fichier>
Après l’appui sur la touche entrer, le prompt disparaît pour laisser place à une série de tilde (~) qui indiquent que les lignes sont vides.
Les modes
Permutation
Il y a deux modes dans vi:
- le mode saisie;
- le mode commande.
Par défaut il est en mode commande et :
- la touche insert ou i permet de passer en mode insertion ;
- la touche Echap permet de revenir au mode commande.
Lorsque l'on est en mode insertion un nouvel appui sur la touche insert permet de passer en mode replace (remplacement).
Répétitions
n<commande>
Par exemple dd efface une ligne et 5dd efface 5 lignes
Quitter...
...en sauvant
Lorsque l'on a fini d'éditer son fichier texte, on peut le sauver en repassant en mode commande (touche Echap) et en tapant:
:wq
ou bien
:x
ou encore en appuyant deux fois sur la touche Z (deux Z majuscules)
...en abandonnant les modifications
Si l'on a fait une erreur et que l'on veut quitter sans sauver, on peut le faire en repassant en mode commande (touche Echap) et en tapant:
:q!
Éditer
Undo
u permet de défaire une modification
Repeat
. permet de répéter la dernière commande d’édition
Effacer
- x permet d’effacer le caractère courant
- c permet d’effacer le texte et de passer en mode insertion:
- cw → change du curseur jusqu’à la fin du mot
- c$ → change jusqu’à la fin de la ligne
- cc → change la ligne courante
Couper
- d permet de couper grâce à l’appui de:
- dw → coupe du curseur jusqu’à la fin du mot
- dd → coupe la ligne complète
- d$ → coupe du curseur à la fin de la ligne
- d^ → coupe du curseur au premier caractère non vide (pas une tabulation ou un espace)
- d0 → coupe du curseur jusqu’au début de la ligne
Copier
y permet de copier grâce à l’appui de:
- yw → copie du curseur à la fin du mot (nyw copie les n mots)
- yy ou Y → (yank) copie la ligne courante dans le buffer (nyy copie les n lignes)
- y0 → copie du curseur jusqu’au début de la ligne
Coller
- p → colle les lignes copiées en dessous du curseur
- P → colle les lignes copiées au-dessus du curseur
Suppressions
Dans tout le fichier
- g/^#/d → permet de supprimer les lignes commençant par #
- g/^$/d → permet de supprimer les lignes vides (sans espace ni tabulation)
Sur la ligne
- dfX → permet de supprimer du curseur jusqu'au caractère X
- dtX → permet de supprimer du curseur jusqu'au caractère X non inclue
Insertion
- o → permet d'insérer une ligne en-dessous du curseur
- O → permet d'insérer une ligne au-dessus du curseur
Remplacements
Au niveau fichier
- :s/toto/titi/g → permet de remplacer toutes les occurrences (grâce au /g) de toto par titi sur la ligne du curseur
- :%s/toto/titi/g → permet de remplacer toutes les occurrences (grâce au /g) de toto par titi dans tout le document (grâce au %)
- :1,5/toto/titi/g → permet de remplacer toutes les occurrences (grâce au /g) de toto par titi de la ligne 1 à la ligne 5 (grâce au 1,5)
Au niveau curseur
- x → permet de supprimer le caractère sur le curseur
- rX → permet de remplacer le caractère sur le curseur par X
- R → permet de passer en mode remplacement
Placements
Dans la globalité du fichier
- A → permet de placer le curseur en mode insert à la fin de la ligne courante
- :X ou XG → permet de se déplacer à la ligne X du fichier
- G → permet de se déplacer à la fin du fichier
- `` → permet de revenir à la position précédente
Sur la partie présente à l'écran
- H → déplace le curseur à la première ligne visible à l'écran (HOME)
- M → déplace le curseur au milieu de l'écran (MIDDLE)
- L → déplace le curseur à la dernière ligne visible à l'écran (LAST)
- zz → centre l'écran sur le curseur
Sur la ligne
- W → déplace le curseur sur le mot suivant sans tenir compte de la ponctuation
- w → déplace le curseur sur le mot suivant
- B → déplace le curseur sur le mot précédent sans tenir compte de la ponctuation
- b → déplace le curseur sur le mot précédent
- ^ → déplace le curseur sur le premier caractère non vide (pas une tabulation ou un espace)
- 0 → déplace le curseur au début de la ligne
- $ → déplace le curseur à la fin de la ligne
Recherche
- /coucou → permet de placer le curseur sur la prochaine occurrence de coucou
- n → permet de passer à l'occurence suivante (next)
- fX permet de recherche le caractère X en avant en appuyant sur ;
- FX permet de recherche le caractère X en arrière en appuyant sur ;
Astuces
Exécution
- ! → permet d’exécuter une commande depuis vi, cela démarrera un Shell interactif.
- :sh → permet de passer l’éditeur de texte en arrière plan pour avoir un shell et ctrl+d permet de le reprendre
Récupération
Si le système crash, il est possible de récupérer les changements grâce à l'option -r (recovery) de vi :
# vi -r <mon_fichier>