Commandes de base

Guide de SUR-VI (Utilisation de vi)

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

vi



Introduction



L’éditeur de texte vi permet d’éditer les fichiers de configuration des différents programmes et fonctionnalités. Il fonctionne en mode texte, son fonctionnement peut paraître déroutant au premier abord…
Voici un petit guide de sur-vi :happy1: qui est loin de présenter toutes les fonctionnalités de vi mais permet néanmoins d’éditer les fichiers dans de bonnes conditions.
Sous vi, il faut distinguer 2 modes : le mode commandes et le mode édition.

Le mode commandes et mode insertion



C’est le mode par défaut lorsque vi s’ouvre. Ce mode ne permet pas de taper du texte. Pour entrer dans le mode commande, appuyer sur la touche Echap.

Le mode insertion permet de taper du texte. pour entrer dans le mode insertion, appuyer sur i .

Il existe d'autres modes d'édition, comme le mode remplacement.

Le déplacement (mode commande)



  • Aller en début de ligne → 0
  • Aller en fin de ligne → $
  • Ligne précédente (ou monter) → k
  • Ligne suivante (ou descendre) → j
  • Caractère précédent (ou aller à gauche) → h
  • Caractère suivant (ou aller à droite) → l
  • Mot précédent → b
  • Mot suivant → w
  • Page précédente → Ctrl+B (ou Page précédente avec vim)
  • Page suivante → Ctrl+F(ou Page suivante avec vim)
  • Aller à la ligne n → ngg ou nG (où n est le numéro de ligne)
  • Aller à la première ligne : gg
  • Aller à la dernière ligne → G


Quitter / Enregistrer (mode commande)



  • Enregistrer SANS quitter → :w
  • Quitter en enregistrant les modifications → :wq ou:x
  • Quitter sans enregistrer les modifications → :q!


Insertion (mode commande et passer en mode édition)



  • Activer le mode insertion → i
  • Insérer au début de la ligne → I (i majuscule)
  • Activer le mode insertion, un caractère après le curseur → a
  • Insérer en fin de ligne → A
  • Insérer une ligne (en dessous du curseur) → o
  • Insérer une ligne (au dessus du curseur) → O
  • Quitte le mode édition → Echap


Remplacer (mode commande)



  • Remplacer le caractère sous le curseur → r puis le caractère à insérer
  • Remplacer avec le texte saisi → R puis le texte à remplacer
  • Effacer la suite de la ligne et passer en mode insertion → C
  • Quitte le mode remplacement → Echap


Copier / Couper / Coller (mode commande)



  • Copier la ligne courante → yy
  • Copier n lignes à partir de la ligne courante → nyy (Remplacer n par un nombre)
  • Coller (ligne en dessous le curseur) → p
  • Coller (ligne au dessus le curseur) → P
  • Couper la ligne courante → dd
  • Couper n lignes à partir de la ligne courante → ndd (Remplacer n par un nombre)


Effacer (mode commande)



  • Effacer le caractère courant → x
  • Effacer la ligne courante → dd
  • Effacer n lignes à partir de la ligne courante → ndd (Remplacer n par un nombre)
  • Effacer le mot sous le curseur → dw
  • Effacer du curseur à la fin de la ligne → d$
  • Effacer du début de la ligne au curseur → d^


Rechercher (mode commande)



  • Appuyer sur la touche / puis taper la chaîne à rechercher. Appuyer sur la touche Entrée. Appuyer sur la touche n pour aller à l’occurrence suivante, N pour l’occurrence précédente.
  • Recherche en avant du mot texte → /texte
  • Recherche en arrière du mot texte → ?texte
  • Aller à l'occurrence suivante → n
  • Aller à l'occurrence précédente → N


Divers (mode commande)



  • Annuler la dernière action → u
  • Modifier la casse du caractère → ~ (la tilde avec AltGR+2)



Vim : un vi amélioré



vim est un éditeur de texte similaire à vi mais présente plus de fonctionnalités, comme la coloration syntaxique, ou le déplacement dans l'éditeur avec les flèches directionnelles au lieu de hjkl

Installer vim



Sur les bases RHEL, installer vim-enhanced :

Code BASH :
yum install vim-enhanced


Pour éviter d'utiliser vim et permettre l'alias vi=vim, éditez /etc/profile.d/vim.sh et commentez la ligne suivante :
Code TEXT :
  #[ -n "$ID" -a "$ID" -le 200 ] && return


Les commandes avancées du mode commandes



  • Afficher les numéros de ligne → :set number ( pour désactiver → :set nonumber )
  • Afficher la coloration syntaxique → :syntax on ( pour désactiver → :syntax off )
  • Entrer et sortir du mode "paste" (coller un texte indenté) → :sset paste ( pour désactiver → :set nopaste )
  • Indentation automatique → :set autoindent( pour désactiver → :set noautoindent )
  • Colorer toutes les occurrences d'un mot → * sur le mot qui est sous le curseur (pour désactiver : :noh )



Changer la coloration syntaxique



Par défaut, la coloration syntaxique de vim peut ne pas être terrible (commentaires bleu très foncé).
Vous pouvez changer les couleurs avec la commande :color theme

Pour lister les thèmes (remplacer le 81 par la version de vim) :
Code BASH :
ls /usr/share/vim/vim81/colors/


Personnellement, j'aime bien le thème desert (couleurs similaires à nano).


Rendre persistantes les données



Pour rendre persistantes les informations, on peut éditer le fichier ~/.vimrc et y ajouter les lignes tapées.

Code BASH :
set number
set autoindent
syntax on
color desert


Remplacer du texte



Pour remplacer du texte sur 1 ligne :
Code BASH :
:s/ancienmot/nouveaumot/g

Pour remplacer 1 mot par un autre dans tout le fichier :
Code BASH :
:%s/ancienmot/nouveaumot/g


Supprimer le caractère ^M avec vi



Lorsqu’un fichier est édité sur un système Windows/DOS à la fin de chaque ligne le caractère « ^M » apparait.
Si vous souhaitez supprimer ce caractère sur l’ensemble du fichier avec l’éditeur vi voici la commande à utiliser:
Code BASH :
:%s/^M/\r/g

Il ne faut pas saisir ^M mais procéder ainsi :
Code BASH :
:%s/[ctrl+V][ctrl+M]/\r/g


Programmation : sauter entre une ouverture et une fermeture de parenthèse, accolade



Si dans VIM, vous avez du code long, et que vous souhaitez aller d'une accolade à l'autre, il est possible de s'y rendre directement avec % en mode commande.

Exemple :

Code TEXT :
if ( $toto == $tata ) {
        echo "truc";
}
 


En se positionnant sur le } et en appuyant sur %, on revient au { en fin de ligne où il y a le texte $toto == $tata !

interagir entre vim et bash



Si on veut par exemple exécuter le script qu'on est en train d’écrire dans vim : :! ./%

Si on veut enregistrer un fichier système alors qu'on l'a édité en tant qu'utilisateur simple : :w !sudo tee %

Insérer le résultat d'une commande bash (exemple avec 'ls -l / | grep bin' ) dans vim en dessous de la ligne courante ; :r ! ls -l / | grep bin

Afficher les caractères invisibles (fin de ligne, tabulations)



Pour afficher les caractères invisibles, par exemple pour mieux repérer les tabulations des espaces, on pourra utiliser :
Code TEXT :
:set list


Afficher des colonnes virtuelles



Dans un fichier, on peut afficher des repères à un certain nombre de caractères.
Des colonnes rouges apparaissent.

Pour mettre un repère à 40 caractères :
Code TEXT :
:set colorcolumn=40


On peut abréger la commande avec cc et définir plusieurs colonnes :
Code TEXT :
:set cc=40,80


Créer un fichier chiffré



On peut, avec vim, créer un fichier qui sera protégé par mot de passe.

On utilisera pour cela :

Code BASH :
vim -x fichier.txt


La passphrase sera demandée.

Pour procéder au chiffrement d'un fichier non chiffré, on utilisera :X

Pour ne plus chiffrer le fichier, on utilisera :X et on laissera la passphrase vide.