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.
Evidemment, il existe d'autres éditeurs de texte sous Linux comme nano, mais ce n'est pas le but d'en parler ici.
Dans quasiment toutes les distributions Linux, vi est présent. Il s'agit de la version très basique de vi.
Il existe une version améliorée : vim. vim va permettre une navigation plus confortable (avec les flèches directionnelles) et des options additionnelles (coloration, numérotation des lignes, etc...)
Pour installer vim :
Red Hat et dérivées + Fedora :
ou avec le nim exact du paquet :
Sous RedHat et dérivées + Fedora, dès que vim est installé, un alias vi est automatiquement créé pour pointer sur vim.
Debian et dérivées :
Gentoo et dérivées :
Sous Gentoo, si vi et vim sont installés, on peut invoquer directement vim quand vi est tapé via le paramétrage suivant :
Et définir par vi (qui renvoie à vim) comme éditeur de texte par défaut :
Sous vi, il faut distinguer 2 modes : le mode commandes et le mode édition.
Le mode commande est le mode par défaut lorsque vi s’ouvre.
Le mode édition permet de taper du texte. Parmi les modes éditions couramment utilisé, on trouvera le mode insertion !
Ce mode commande dans lequel on arrive après avoir invoqué vi ne permet pas de taper du texte.
Pour entrer dans le mode insertion, appuyer sur i.
A ce stade, il est possible d'écrire du texte.
On peut naviguer dans le fichier à l'aide des flèches directionnelles.
Pour revenir dans le mode commande (qui nous permettra d'enregistrer et de quitter notamment), appuyer sur la touche Echap.
Pour enregistrer, il s'agit de taper :w depuis ce mode commande.
Pour quitter, c'est la commande :q. Si vous tentez de quitter et que des modifications ont été faites dans le fichier, un avertissement s'affiche. Si vous souhaitez tout de même quitter SANS enregistrer les modifications taper :q!
Pour enregistrer et quitter :wq
A partir de là, vous êtes dans la capacité de réaliser les actions de base pour éditer des fichiers sous Linux avec vim.
Pour aller plus loin, je vous liste les différentes commandes et possibilités de vi, que j'utilise assez souvent.
Je suis un gros utilisateur de vim, je vous mets donc ce que j'utilise souvent et par extension des commandes utiles, classées par type de commande.
Je vous souligne à titre indicatif celles que j'utilise très régulièrement !
Il existe d'autres modes d'édition, comme le mode remplacement.
A titre personnel, je n'utilise que très rarement ce mode de remplacement.
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 :
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.
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
- Installation de vi et vim
- Le mode commandes et mode insertion
- Le strict minimum à savoir
- Liste de quelques commandes utiles sous vi
- Insertion (mode commande et passer en mode édition)
- Quitter / Enregistrer (mode commande)
- Le déplacement (mode commande)
- Remplacer (mode commande et passer en mode édition)
- Copier / Couper / Coller (mode commande)
- Effacer (mode commande)
- Rechercher (mode commande)
- Divers (mode commande)
- Remplacer du texte
- CAS SPECIAL : Supprimer le caractère ^M avec vi
- Personnalisation et confort vim
- Les commandes avancées du mode commandes
- Changer la coloration syntaxique
- Rendre persistantes les données
- 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.
Evidemment, il existe d'autres éditeurs de texte sous Linux comme nano, mais ce n'est pas le but d'en parler ici.
Installation de vi et vim
Dans quasiment toutes les distributions Linux, vi est présent. Il s'agit de la version très basique de vi.
Il existe une version améliorée : vim. vim va permettre une navigation plus confortable (avec les flèches directionnelles) et des options additionnelles (coloration, numérotation des lignes, etc...)
Pour installer vim :
Red Hat et dérivées + Fedora :
Code BASH :
dnf install vim
ou avec le nim exact du paquet :
Code BASH :
dnf install vim-enhanced
Sous RedHat et dérivées + Fedora, dès que vim est installé, un alias vi est automatiquement créé pour pointer sur vim.
Debian et dérivées :
Code BASH :
apt install vim
Gentoo et dérivées :
Code BASH :
emerge app-editors/vim
Sous Gentoo, si vi et vim sont installés, on peut invoquer directement vim quand vi est tapé via le paramétrage suivant :
Code BASH :
eselect vi set vim
Et définir par vi (qui renvoie à vim) comme éditeur de texte par défaut :
Code BASH :
eselect editor set vi
Le mode commandes et mode insertion
Sous vi, il faut distinguer 2 modes : le mode commandes et le mode édition.
Le mode commande est le mode par défaut lorsque vi s’ouvre.
Le mode édition permet de taper du texte. Parmi les modes éditions couramment utilisé, on trouvera le mode insertion !
Le strict minimum à savoir
Ce mode commande dans lequel on arrive après avoir invoqué vi ne permet pas de taper du texte.
Pour entrer dans le mode insertion, appuyer sur i.
A ce stade, il est possible d'écrire du texte.
On peut naviguer dans le fichier à l'aide des flèches directionnelles.
Pour revenir dans le mode commande (qui nous permettra d'enregistrer et de quitter notamment), appuyer sur la touche Echap.
Pour enregistrer, il s'agit de taper :w depuis ce mode commande.
Pour quitter, c'est la commande :q. Si vous tentez de quitter et que des modifications ont été faites dans le fichier, un avertissement s'affiche. Si vous souhaitez tout de même quitter SANS enregistrer les modifications taper :q!
Pour enregistrer et quitter :wq
A partir de là, vous êtes dans la capacité de réaliser les actions de base pour éditer des fichiers sous Linux avec vim.
Liste de quelques commandes utiles sous vi
Pour aller plus loin, je vous liste les différentes commandes et possibilités de vi, que j'utilise assez souvent.
Je suis un gros utilisateur de vim, je vous mets donc ce que j'utilise souvent et par extension des commandes utiles, classées par type de commande.
Je vous souligne à titre indicatif celles que j'utilise très régulièrement !
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
Quitter / Enregistrer (mode commande)
- Enregistrer SANS quitter → :w
- Quitter en enregistrant les modifications → :wq ou :x ou ZZ
- Quitter sans enregistrer les modifications → :q!
Le déplacement (mode commande)
Il existe d'autres modes d'édition, comme le mode remplacement.
- Aller en début de ligne → 0
- Aller en fin de ligne → $
- Ligne précédente (ou monter) → k (flèche haut avec vim)
- Ligne suivante (ou descendre) → j (flèche bas avec vim)
- Caractère précédent (ou aller à gauche) → h (flèche gauche avec vim)
- Caractère suivant (ou aller à droite) → l (flèche droite avec vim)
- 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
Remplacer (mode commande et passer en mode édition)
A titre personnel, je n'utilise que très rarement ce mode de remplacement.
- 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)
- 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)
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
CAS SPECIAL : 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
Personnalisation et confort vim
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
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.