Vi

Un article de SeRoM - Wiki.

Petit Mémo Vi

Sommaire

[modifier] Commandes Vi

[modifier] Pour diriger le curseur dans Vi, il faut utiliser:

  • h j k l À la place des flèches.
  • 0 $ Pour se placer au début ou fin de ligne.
  • W w B b Pour avancer par mot
  • <n>| Pour se déplacer au n-ème char de la ligne.
  • H M L Pour passer à la première(H) ligne de l'écran, la ligne du millieu(M) ou la dernière(L).
  • <n>H <n>M <n>L Pour arriver x lignes après H M ou L.
  • ( ) Pour se déplacer de phrase en phrase haut / bas
  • { } Pour se déplacer de paragraphe en paragraphe

[modifier] GoTo

  • gg G Pour arriver en début(gg) ou en fin(G) de ficher
  • 44G Pour arriver au début de la 44e ligne.
  • ^G Affiche les infos sur la position du curseur (Ligne, colonne, ...)
  • `` ' ' Retourne à la dernière possition de modification (après emplois d'un GoTo ou un serach)

[modifier] Pour couper remplacer ... :

  • cw remplace les char jusqu'à ce que l'on tape enter
  • r remplace le char en dessous du curseur par la lettre tapée
  • x supprime le char sous le curseur (5x supprime 5char suivants et 3X supprime les 3char précédents)
  • dd -> p couper -> coller la ligne (voir Supperssion et Récupération)
  • y -> p copier -> coller
  • "<a-z>yy pour copier qqch dans un buffer (a-z)
  • "<A-Z>yy pour copier qqch à la suite du buffer
  • "<a-z>p pour recopier le contenu d'un buffer (a-z)

[modifier] Type d'insertion:

  • a insert après le curseur
  • i insert au curseur
  • c + <déplacement> remplace sur la longeur du remplacement (cw remplace le mot, c$ jusqu'en bout de ligne, c3l les 3char suivants).

[modifier] Supperssion:

  • dd supprime la ligne
  • dw supprime par mot (ou la fin du mot si curseur est dedans >< db)
  • d$, d0, d4h, ...

[modifier] Récupération:

  • p colle la dernière suppression
  • 3p colle 3x la dernière suppression
  • "5p Colle la 5eme suppresion
  • "1pu.u.u.u ... pour parcourire le buffer

[modifier] Déplacement view:

  • Ctrl + F/B Défile d'un écran Down/Up
  • Ctrl + D/U Défile d'un demi-écran Down/Up
  • Ctrl + E/Y Défile d'une ligne Down/Up
  • zz Place le focus avec le curseur en milleur d'écran
  • z- Place le focus avec le curseur en bas d'écran
  • z + <Enter> Place le focus avec le curseur en haut d'écran

[modifier] Recherche:

  • /Pattern Recherche du pattern vers le bas.
  • ?Pattern Recherche du pattern vers le haut.

[modifier] Poser des marqueurs:

  • m[a-z] Place le marqueur
  • `[a-z] Retourne au marqueur [a-z]
  • '[a-z] Retourne au début de ligne indiqué par le marqueur [a-z]

note: Les marqueurs ne sont pas enregistrés dans le fichier, ils ne fonctionne que pendant la session courrante.

[modifier] Replacement:

  • :s/<old>/<new>/ Remplace la prochaine occurence de 'old' par 'new' de la ligne
  • :s/<old>/<new>/g Remplace toutes les occurences de 'old' par 'new' de la ligne
  • :%s/<old>/<new>/g Remplace toutes les occurences de 'old' par 'new' du fichier
  • :%s/<old>/<new>/gc Pareil que précédant, mais avec demande confirmation pour chaque remplacement

[modifier] Regex:

  • . Remplace 1 char
  • <char>* Remplace de 0 à x le char
  • ^<pattern> Impose que le pattern commence la ligne
  • <pattern>$ Impose que le pattenr termine la ligne
  • [<list>] Correspond si dans la liste
    • [aeiou] (a e i o u)
    • [A-Z] Le - permet de décrire un scoop (de A à Z)
    • [^,] Le ^ permet d'exclure un char (tous sauf la virgule)
    • [\[] Le \ permet déchaper un des char précédement cité (echape le [)

[modifier] Commande Ex

[modifier] Gestion de fichier

  • e<filename> Pour ouvir le fichier filename.
  • n Pour passer le focus dun fichier ouvert ver un autre.
  • args ar Pour afficher les fichiers ouverts

[modifier] Affichage du fichier

  • :<n> Pour affichier la ligne n
  • :<n>,<m> Pour afficher les lignes de n à m ou n&m sont soit un chiffre, soit un . (pour la position courrante), soir un $ (pour la fin de fichier).

[modifier] Deplacement copie et autre

  • :d Supprime la ligne courante.
  • :<lignes>d Supprime les lignes indiquées (12 12,. .-2,20).
  • :<lignes>m<dest> Move lines.
  • :<lignes>co<dest> :<lignes>t<dest> Copy lines.

[modifier] Exemple:

:20,.+3m$ Déplace les lignes entre la 20em à la courante plus 3(.+3) en fin de fichier($).

[modifier] Note:

diff entre n,+x et n;+x. Dans le 1er cas (,) le +x est calculé à partir dou se trouve le curseur, mais dans le cas du ; le curseur est déplacer à la ligner indiqué par le premier champ (n).

[modifier] Recherche

  • :/<pattern> Positionne le curseur et affiche la 1ere ligne où se trouve le pattern
  • :g/<pattern> Affiche toutes les lignes contenant le pattern (le curseur se trouve sur la dernière ligne contenant le pattern)
  • :g!/<pattern> Affiche toutes les lignes NE contenant PAS le pattern (le curseur se trouve sur la dernière ligne ne contenant pas le pattern)

[modifier] Exemple un peu complex:

  • :20,64g/<pattern> Affiche les lignes entre 20 et 64 qui contiennent le pattern.

[modifier] Combinaison de commande

  • :exCmd | exCmd Permet d'enchainer 2 commandes ex. Si la 1er commande déplace le curseur, la seconde commande sera excécuté avec à partir du curseur déplacé.

[modifier] Commande Unix in Ex & Vi

  • ':!XXX Commencer une commande par un point d'exclamation donne accès a Unix, et permet d'exécuter des commandes Unix en restant dans Vi.

[modifier] Lien intéressant