« vi » pour forcer lâaccĂšs en Ă©criture : lâastuce
vi est un Ă©diteur de texte en mode texte plein disponible sur Linux et fonctionnement dans un terminal. Il permet en particulier dâĂ©diter des documents textes Ă distance.
Fonctionnement
vi fonctionne dans 3 modes différents, le mode commande, le mode insertion et le mode sélection.
- Le mode insertion correspond au mode dans lequel on tape le texte Ă saisir.
- Le mode commande permet de se déplacer, de faire des recherches et éventuellement remplacements, de supprimer du texte et de passer dans les autres modes.
- Le mode sélection permet de sélectionner du texte librement, ligne par ligne ou sous forme de zone rectangulaire, et de le placer dans le presse-papiers (« couper » et « copier »).
vi fait la diffĂ©rence entre minuscules et majuscules. Dâautre part, on peut donner un facteur de rĂ©pĂ©tition Ă quasiment toutes les commandes en tapant ce nombre avant la commande (ex. 20k
remonte de 20 lignes): il faut donc faire attention Ă ce quâon fait dĂšs quâon sâapproche du pavĂ© numĂ©rique !
Rappel des principales commandes
Commande | Description |
---|---|
0 (zéro) | Aller en début de ligne |
$ | Aller en fin de ligne, $ est le signe indiquant la fin de ligne dans les expressions réguliÚres. |
k | Ligne précédente |
j | Ligne suivante |
h | CaractÚre précédent |
l | CaractĂšre suivant |
b | Mot précédent |
w | Mot suivant |
CTRL + b | Page précédente |
CTRL + f | Page suivante |
nG | Aller à la ligne n. Exemple : 1G va sur la premiÚre ligne |
G | Aller Ă la derniĂšre ligne |
x | Supprime le caractĂšre sous le curseur |
dd | Supprime la ligne courante et la copie dans le presse-papiers |
nd | Idem avec n lignes |
J | Fusionne la ligne courante et la suivante |
yy | Copie la ligne courante dans le presse-papiers |
ny | Idem avec n lignes |
P | Colle le presse-papiers avant la position courante |
p | Colle le presse-papiers aprĂšs la position courante |
v | Commence une sélection en mode caractÚres |
V | Commence une sélection en mode lignes |
CTRL + v | Commence une sélection en mode « rectangulaire » |
d | Supprime la sélection et la copie dans le presse-papiers |
y | Copie la sélection dans le presse-papiers |
c | Supprime la sélection et passe en mode insertion |
i | Passe en mode insertion avant la position courante |
a | Passe en mode insertion aprĂšs la position courante |
o | Passe en mode insertion sur une nouvelle ligne sous la ligne courante |
« ESC » | Quitte le mode insertion |
u | Annule la derniĂšre commande |
r | Remplace le caractÚre sous le curseur par le prochain caractÚre tapé |
~ | Convertis le caractĂšre sous le curseur en majuscule si câest une minuscule et vice-versa |
/ texte | Recherche en avant du texte indiqué |
? texte | Recherche en arriÚre du texte indiqué |
n | Recherche lâoccurrence suivante |
N | Recherche lâoccurrence prĂ©cĂ©dente |
:%s/ chercher/ remplacer | Recherche avec remplacement dans tout le fichier |
:w | Sauvegarde le fichier courant |
:w fichier | Ăcrit le document dans le fichier indiquĂ© |
:r fichier | Inclut le fichier indiqué à partir de la position courante |
:q! | Quitter en annulant les modifications |
ZZ (ou :wq ) | Quitter en enregistrant les modifications |
Ăditer un fichier nĂ©cessitant les droits « root ».
Le plus simple est Ă©videmment dâutiliser la commande sudo depuis votre shell (bash).
sudo vi /etc/fstab
Sauvegarder dâun fichier nĂ©cessitant les droits « root » aprĂšs coup.
Cependant il arrive que lâon ne rĂ©alise quâaprĂšs la modification (lors de la sauvegarde) que le fichier est protĂ©gĂ©.
Mais votre travail nâest pas perdu, depuis lâĂ©diteur en mode commande (en utilisant la touche ESC
/ECHAP
) vous pouvez utiliser le groupe dâinstruction suivant :
:w !sudo tee %
:w
permet dâĂ©crire le contenu de lâĂ©diteur vers un fichier (sans aucune option il sâagit du fichier courant, le cas dâusage standard).
La commande w
permet Ă©galement dâĂ©crire vers un nouveau fichier (câest dans ce cas dâusage). La commande :w file.txt
permet de sauvegarder le contenu de lâĂ©diteur dans le fichier file.txt
.
Lâastuce ici consiste Ă substituer le nom de fichier la commande sudo (pour Ă©lever les privilĂšges) suivit de la commande tee
et le %
de choisir comme destination de la commande tee le nom du fichier dâorigine.
኿