Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

« Vi / Vim » : différence entre les versions

De The Linux Craftsman
Magsss (discussion | contributions)
 
(32 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 46 : Ligne 46 :


=== ...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 66 : Ligne 66 :


*''c'' permet d’effacer le texte et de passer en mode insertion:
*''c'' permet d’effacer le texte et de passer en mode insertion:
**''cw'' &rarr; change jusqu’à la fin du mot
**''cw'' &rarr; change du curseur jusqu’à la fin du mot
**''c$'' &rarr; change jusqu’à la fin de la ligne
**''c$'' &rarr; change jusqu’à la fin de la ligne
**''cc'' &rarr; change la ligne courante
**''cc'' &rarr; change la ligne courante
Ligne 73 : Ligne 73 :


*''d'' permet de couper grâce à l’appui de:
*''d'' permet de couper grâce à l’appui de:
**''dw'' &rarr; coupe jusqu’à la fin du mot
**''dw'' &rarr; coupe du curseur jusqu’à la fin du mot
**''dd'' &rarr; coupe la ligne complète
**''dd'' &rarr; coupe la ligne complète
**''d0'' &rarr; coupe jusqu’au début de la ligne
**''d$'' &rarr; coupe du curseur à la fin de la ligne
**''d^'' &rarr; coupe du curseur au premier caractère non vide (pas une tabulation ou un espace)
**''d0'' &rarr; coupe du curseur jusqu’au début de la ligne


== Copier ==
== Copier ==
y permet de copier grâce à l’appui de:
*''yw'' &rarr; copie du curseur à la fin du mot (''nyw'' copie les n mots)
*''yy'' ou ''Y'' &rarr; (yank) copie la ligne courante dans le buffer (''nyy'' copie les n lignes)
*''y0'' → copie du curseur jusqu’au début de la ligne


''yy'' &rarr; (yank) copie la ligne courante dans le buffer (''nyy'' copie les n lignes)
== Coller ==
*''p'' &rarr; colle les lignes copiées en dessous du curseur
*''P'' &rarr; colle les lignes copiées au-dessus du curseur
 
== Suppressions ==
=== Dans tout le fichier ===
*'':g/^#/d'' &rarr; permet de supprimer les lignes  commençant par ''#''
*'':g/^$/d'' &rarr; permet de supprimer les lignes vides (sans espace ni tabulation)
 
=== Sur la ligne ===
*''dfX'' &rarr; permet de supprimer du curseur jusqu'au caractère X
*''dtX'' &rarr; permet de supprimer du curseur jusqu'au caractère X non inclue
 
== Insertion ==
* ''o'' &rarr; permet d'insérer une ligne en-dessous du curseur
* ''O'' &rarr; permet d'insérer une ligne au-dessus du curseur


== Coller ==
== Remplacements ==
*''p'' &rarr; colle les lignes copiées à la ligne en-dessous
=== Au niveau fichier ===
*''P'' &rarr; colle les lignes copiées au-dessus
*'':s/toto/titi/g'' &rarr; permet de remplacer toutes les occurrences (grâce au ''/g'') de ''toto'' par ''titi'' sur la ligne du curseur
*'':%s/toto/titi/g'' &rarr; 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'' &rarr; 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'' &rarr; permet de supprimer le caractère sur le curseur
*''rX'' &rarr; permet de remplacer le caractère sur le curseur par X
*''R'' &rarr; permet de passer en mode remplacement
 
=Placements =
=== Dans la globalité du fichier ===
*''A'' &rarr; permet de placer le curseur en mode ''insert'' à la fin de la ligne courante
*'':X'' ou ''XG'' &rarr; permet de se déplacer à la ligne X du fichier
*''G'' &rarr; permet de se déplacer à la fin du fichier
*''``'' &rarr; permet de revenir à la position précédente
 
=== Sur la partie présente à l'écran ===
*''H'' &rarr; déplace le curseur à la première ligne visible à l'écran (''HOME'')
*''M'' &rarr; déplace le curseur au milieu de l'écran (''MIDDLE'')
*''L'' &rarr; déplace le curseur à la dernière ligne visible à l'écran (''LAST'')
*''zz'' &rarr; centre l'écran sur le curseur


= Astuces =
=== Sur la ligne ===
*''W'' &rarr; déplace le curseur sur le mot suivant sans tenir compte de la ponctuation
*''w'' &rarr; déplace le curseur sur le mot suivant
*''B'' &rarr; déplace le curseur sur le mot précédent sans tenir compte de la ponctuation
*''b'' &rarr; déplace le curseur sur le mot précédent


== Suppressions ==
*''^'' &rarr; déplace le curseur sur le premier caractère non vide (pas une tabulation ou un espace)
*''0'' &rarr; déplace le curseur au début de la ligne
*''$'' &rarr; déplace le curseur à la fin de la ligne


*''g/^#/d'' &rarr; permet de supprimer les lignes  commençant par ''#''
== Recherche ==
*''g/^$/d'' &rarr; permet de supprimer les lignes vides (sans espace ni tabulation)
*''/coucou'' &rarr; permet de placer le curseur sur la prochaine occurrence de ''coucou''
*''/coucou'' &rarr; permet de placer le curseur sur la prochaine occurrence de ''coucou''
* ''n'' &rarr; 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 ==
*''!'' &rarr; permet d’exécuter une  commande depuis vi, cela démarrera un Shell interactif.
*''!'' &rarr; permet d’exécuter une  commande depuis vi, cela démarrera un Shell interactif.
*'':sh'' &rarr; permet de passer l’éditeur de texte en arrière plan pour avoir un shell et ''ctrl+d'' permet de le reprendre
*'':sh'' &rarr; permet de passer l’éditeur de texte en arrière plan pour avoir un shell et ''ctrl+d'' permet de le reprendre


== Remplacement ==
== 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'' :
*'':s/toto/titi/g'' &rarr; permet de remplacer toutes les occurrences (grâce au ''/g'') de ''toto'' par ''titi'' sur la ligne du curseur
<pre>
*'':%s/toto/titi/g'' &rarr; permet de remplacer toutes les occurrences (grâce au ''/g'') de ''toto'' par ''titi'' dans tout le document (grâce au ''%'')
# vi -r <mon_fichier>
*'':[1,5]/toto/titi/g'' &rarr; 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]'')
</pre>

Dernière version du 23 janvier 2026 à 06:14

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>