Guide de SUR-VI (Utilisation de vi)
Table des matières
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 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.
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.
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
Sur les bases RHEL, installer vim-enhanced :
Pour éviter d'utiliser vim et permettre l'alias vi=vim, éditez /etc/profile.d/vim.sh et commentez la ligne suivante :
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) :
Personnellement, j'aime bien le thème desert (couleurs similaires à nano).
Pour rendre persistantes les informations, on peut éditer le fichier ~/.vimrc et y ajouter les lignes tapées.
Pour remplacer du texte sur 1 ligne :
Pour remplacer 1 mot par un autre dans tout le fichier :
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:
Il ne faut pas saisir ^M mais procéder ainsi :
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 :
En se positionnant sur le } et en appuyant sur %, on revient au { en fin de ligne où il y a le texte $toto == $tata !
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
Pour afficher les caractères invisibles, par exemple pour mieux repérer les tabulations des espaces, on pourra utiliser :
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 :
On peut abréger la commande avec cc et définir plusieurs colonnes :
On peut, avec vim, créer un fichier qui sera protégé par mot de passe.
On utilisera pour cela :
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.
- Introduction
- Le mode commandes et mode insertion
- Vim : un vi amélioré
- Installer vim
- Les commandes avancées du mode commandes
- Changer la coloration syntaxique
- Rendre persistantes les données
- Remplacer du texte
- Supprimer le caractère ^M avec vi
- Programmation : sauter entre une ouverture et une fermeture de parenthèse, accolade
- interagir entre vim et bash
- Afficher les caractères invisibles (fin de ligne, tabulations)
- Afficher des colonnes virtuelles
- Créer un fichier chiffré
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 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 )
- Activer la coloration syntaxique d'un langage particulier → :set syntax=html
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.