====== vim Tableau ======
* Objet : vim en tableaux
* Niveau requis :{{tag>débutant avisé}}
* Commentaires : // Tableaux des commande d'édition vim en console. //
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-)
* Suivi :
* Création par [[user>martin_mtl]] le 11/12/2012
* Testé par [[user>smolski]] le 17/10/2012
* Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=6050 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Commande =====
- On accède au mode commande en appuyant sur Echap
- Ces commandes peuvent être répétées. \\ Par exemple : 5Dd supprime 5 lignes.
On peut annuler la dernière modification avec la commande « u ».
==== Les options courantes ====
**Remarque :** \\
//Souvent, on peut précéder ces commandes d'un nombre qui indiquera combien de fois répéter la commande.//
^Option ^ Action ^
|x | efface la lettre située sous le curseur.|
|r | remplace la lettre située sous le curseur par une lettre au choix.|
|o | ajoute une nouvelle ligne dw efface le mot courant et le place dans la mémoire tampon.|
|d$ | efface du curseur jusqu'à la fin de la ligne et place cela dans la mémoire tampon.|
|dd | efface la ligne entière et la place dans la mémoire tampon.|
|u | annule la dernière opération.|
|U | annule les opérations sur toute la ligne.|
|C-r | Touches de raccourcis qui annule l'annulation.|
|. | repète la dernière commande effectuée.|
|p | place le contenu de la mémoire tampon là où se trouve le curseur.|
|cw | efface la fin du mot et passe en mode insertion pour corriger.|
|c$ | efface la fin d'une ligne et passe en mode insertion pour corriger.|
|C-g | Touches de raccourci qui indique le chemin du fichier édité en cours.|
| \ | Dans une commande, permet de garder le sens littéral d'une touche active sous vim en la précédant immédiatement. Exemple :%s %%/mp3\//mp3 %% |
|Ctrl a | Positionné sur un chiffre en augmente la valeur d'une unité. Précédé d'un chiffre, l'augmentation se fera sur la valeur de ce chiffre|
|Ctrl x | Positionné sur un chiffre en diminue la valeur d'une unité. Précédé d'un chiffre, la dimunition se fera sur la valeur de ce chiffre|
**Commandes de remplacement de texte :**
^Option ^ Action ^
|:s/old/new | remplace le premier old par new sur la ligne où se trouve le curseur.|
|:s/old/new/g | remplace tous les old par new sur la ligne où se trouve le curseur.|
|:3,7s/old/new/g | remplace tous les old par new de la ligne 3 à 7|
|:%s/old/new/g | remplace tous les old par new dans tout le fichier|
|:%s/mp3%%\//mp3%%/ | remplace '' mp3/ '' par '' mp3 '' dans tout le fichier (//suppression de la barre oblique finale//)|
==== Saisie ====
On utilise ces //commandes Saisie// en les précédant des //doubles points// (**:**) puis en les validant.
^Commande^ Action ^
|a |Ajout de texte derrière le caractère actif|
|A |Ajout de texte en fin de ligne|
|i |Insertion de texte devant le caractère actif|
|I |Insertion de texte en début de ligne|
|o |Insertion d'une nouvelle ligne sous la ligne active|
|O |Insertion d'une nouvelle ligne au-dessus de la ligne active|
=== Astuce ===
Insérez des caractères sur plusieurs lignes après la colonne d'un caractère précis
En mode commande.
- On se place après la colonne à modifier
- On tape : C-v
- On descend jusqu'à la dernière ligne à modifier.
- On tape Maj-i
- On tape ce qu'il faut insérer
- On tape sur la touche du clavier Echap
Et c'est fait.
Exemple :
Je dois ajouter une virgule après le premier chiffre de cette ligne :
91
92
93
94
J'opère comme indiqué :
- Se placer après le 9
- C-v
- Descendre jusqu'au 94
- Maj-i
- ,
- Echap
Et j'obtiens :
9,1
9,2
9,3
9,4
Pour ajouter une virgule après le chiffre 10 :
101
102
103
104
105
Je me place après ce chiffre 10 et je fais tout pareil que précédemment. \\
J'obtiens alors :
10,1
10,2
10,3
10,4
10,5
À noter qu'on peut tout aussi bien utiliser la commande sed, par exemple pour le 91 :
:7,14s/^\(.\)/\1,/
Et pour faire le truc de la ligne 7 à la ligne 14 après le second caractère comme pour 101, on rajoute un point ainsi :
:7,14s/^\(..\)/\1,/
* \1 ça veut dire « ce qu'il y avait entre la première paire de parenthèses échappées »
//Sacré //**matelot**// tout de même qu'il en connaît des combines, hein !// :-D
==== Quitter ====
- La commande **ZZ** quitte et sauve le fichier.
- On utilise ces //commandes Quitter// en les précédant des //doubles points// (**:**) puis en les validant.
^Commande^ Action ^
|q! |quitte sans sauver|
|q |quitte si le fichier n'a pas été modifié|
|w |sauve le fichier|
|wq |sauve et quitte|
|x |sauve et quitte|
==== Déplacement ====
Les déplacement se font en tapant directement les raccourcis indiqués sur le clavier
^Commande^ Action ^
|h |Vers la gauche|
|l |Vers la droite|
|k |Vers le haut|
|j |Vers le bas|
|0 (zéro) |Début de ligne|
|:0 |Première ligne|
|$ |Fin de ligne|
|:$ |Dernière ligne|
|w |Mot suivant|
|b |Mot précédent|
|f//motif// |Saut sur le caractère //motif// indiqué (//Exemple// "fc" //envoie sur le premier caractère// "c" //suivant//)|
|C-f |Remonte d'un écran|
|C-b |Descend d'un écran|
|G |Dernière ligne du fichier|
|NG |Saute à la ligne|
|:n |Saute à la ligne|
==== Correction ====
^Commande^ Action ^
|x |Efface le caractère sous le curseur|
|X |Efface le caractère devant le curseur|
|rc |Remplace le caractère sous le curseur par le caractère "c"|
|dw |Efface le mot depuis le curseur jusqu'à la fin du mot|
|d$ |Efface tous les caractères jusqu'à la fin de la ligne|
|D |Efface tous les caractères jusqu'à la fin de la ligne|
|dO |Efface tous les caractères jusqu'au début de la ligne|
|dfc |Efface tous les caractères de la ligne jusqu'au caractère "c"|
|dG |Efface tous les caractères jusqu'à la dernière ligne, ainsi que la ligne active|
|D1G |Efface tous les caractères jusqu'à la première ligne, ainsi que la ligne active|
|dd |Efface la ligne active|
**Astuce :**
^Commande^ Action ^
|gg V G d | En passant ces commandes une par une, cela efface tout le contenu d'un fichier.|
- gg = tu montes à la première ligne,
- V = tu commences à sélectionner les lignes,
- G = tu descends jusqu'à la dernière ligne,
- d = tu effaces tout ce qui a été sélectionné.
==== Recherche ====
Contrairement à un éditeur de texte classique, vi peut rechercher autre chose que des mots simples et fonctionne à l' aide de caractères spéciaux et de critères.
La commande de recherche est le caractère « / ».
- La recherche démarre du caractère courant à la fin du fichier.
- Le caractère « ? » effectue la recherche en sens inverse.
- On indique ensuite le critère, puis Entrée. \\ Exemple : /echo
recherche la chaîne "echo" dans la suite du fichier.
- Quand la chaîne est trouvée, le curseur s'arrête sur le premier caractère de cette chaîne.
- La commande « n » permet de continuer la recherche dans le sens indiqué au début.
- La commande « N » effectue la recherche en sens inverse.
^Critères - exemple^ Action ^
|[FfBb]oule |Foule, foule, Boule, boule|
|[A-Z]e |Tout ce qui commence par une majuscule avec un e en deuxième position.|
|[A-Za-Z0-9] |tout ce qui commence par une majuscule, minuscule ou un chiffre|
|[%%^%%a-z] |plage négative tout ce qui ne commence pas par une minuscule|
|vé.o |le point remplace un caractère, vélo, véto, véro, ...|
|Au*o |l' étoile est un caractère de répétition, de 0 à n caractères, Auo, Auto, Automoto, ...|
|.* |l'étoile devant le point, une chaîne quelconque de taille variable|
|[A-Z][A-Z]* |répétition du motif entre [] de 0 à n fois, recherche d'un mot comportant au moins une majuscule (en début de mot)|
|%%^%%Auto |le %%^%% indique que la chaîne recherchée devra être en début de ligne|
|Auto$ |le $ indique que la chaîne recherchée devra être en fin de ligne|
==== Remplacement ====
Pour remplacer du texte, il faut se placer au début de la chaîne à modifier, puis taper l'une des commandes suivantes.
Après ces saisies, il suffit de taper son texte et d'appuyer sur Echap.
^Commande^ Action ^
|cw //motif// |Remplacement du mot courant|
|c$ //motif// |Remplacement jusqu'à la fin de la ligne|
|cO //motif// |Remplacement jusqu'au début de la ligne|
|cfx //motif// |Remplacement jusqu'au prochain caractère 'x' dans la ligne courante|
|c/motif (Entrée)|Remplacement jusqu'à la prochaîne occurrence de la chaîne 'motif'|
==== Copier-Coller ====
On utilise la commande « y » (Yank) pour copier du texte, elle-même devant être combinée avec d'autres indications. Pour couper (déplacer), c'est la commande « d ». Pour coller le texte à l'endroit choisi, c'est la commande « p » (derrière le caractère) ou « P » (devant le caractère). Si c'est une ligne complète qui a été copiée, elle sera placée en-dessous de la ligne active.
^Commande^ Action ^
|y |copier du texte|
|d |couper (déplacer)|
|p |coller le texte derrière le caractère|
|P |coller le texte devant le caractère|
|yy |copier une ligne|
|5yy |copier cinq lignes|
==== Tampon (Mémoire) ====
L'éditeur vi dispose de 26 tampons pour y stocker les données que l'on peut nommer comme on le souhaite. On utilise pour ça le « " ».
^Tampon exemple^ Action ^
|"m1y5w |copier cinq mots dans la mémoire m1|
|"m1p |coller le contenu de la mémoire m1 à un endroit donnée|
==== Substitution ====
La substitution permet de remplacer automatiquement plusieurs occurrences par une autre chaîne.
:[1ere ligne, dernière ligne]s/Modèle/Remplacement/[gc]
* Les numéros de lignes sont optionnels. Dans ce cas la substitution ne se fait que sur la ligne courante.
* En remplacement des numéros de lignes :
* « . » détermine la ligne courante
* « 1 » la première ligne
* « $ » la dernière ligne.
* Le modèle est l'un des modèles présenté plus tôt.
* Remplacement est une chaîne quelconque qui remplacera le modèle.
* Par défaut seule la première occurrence est remplacée.
* La lettre « g » indique qu'il faut remplacer toutes les occurrences.
* Avec « c », vi demande une confirmation pour chacune des occurrences.
=== Exemple ===
:1,$s/[Uu]nix/UNIX/g
Cet exemple remplace, dans tout le fichier, Unix ou unix par UNIX.
==== Autres... ====
On utilise ces //commandes// en les précédant des //doubles points// (**:**) puis en les validant.
^Commande^ Action ^
|w Nom_fichier |Sauve le fichier sous Nom_fic, en l' écrasant ou en le créant|
|1,10w Nom_fichier |Sauve les lignes 1 à 10 dans Nom_fic|
|r Nom_fichier |Insère le fichier Nom_fic à partir de la ligne courante|
|! commande |Exécute la commande puis retourne à l'éditeur|
|r! commande |Exécute la commande et insère le résultat à partir de la ligne courante|
|f Nom_fichier |Affiche en bas d'écran le nom du fichier, le nombre de ligne et la position actuelle|
|e Nom_fichier |Le fichier est chargé. Un message indique si le précédent a été modifié|
|e # |Le dernier fichier chargé est affiché. Permet de commuter entre les fichiers|
==== Commande set ====
La commande set permet de configurer l'éditeur.
^Commande^ Action ^
|set all |affiche l'ensemble des options possibles|
|set number |affiche les numéros de lignes.|
|set nonumber |supprime les numéros de lignes.|
|set nu |affiche les numéros de lignes.|
|set nonu |supprime les numéros de lignes.|
|set autoindent |l'indentation est conservée lors d'un retour à la ligne.|
|set noautoindent |l'indentation n'est pas conservée lors d'un retour à la ligne.|
|set showmatch |lors de la saisie d'une accolade ou d'une parenthèse de fermeture, celle d'ouverture est affichée un très court instant, puis l'éditeur revient au caractère courant.|
|set noshowmatch |lors de la saisie d'une accolade ou d'une parenthèse de fermeture, celle d'ouverture est affichée un très court instant, puis l'éditeur revient au caractère courant.|
|set showmode |vi affichera une ligne d'état (INPUT MODE).|
|set noshowmode |vi affichera une ligne d'état (INPUT MODE).|
|set tabstop=x |définit le nombre de caractères pour une tabulation.|
==== Tableau d'ensemble ====
Guide de survie de l'éditeur Vi
^Commande^ Action ^
|vi fichier1 fichier2 |édite les fichiers 1 et 2|
|i |passage en mode insertion|
|: |passage en mode commande|
|Echap |sortir des différents modes|
|:w |sauvegarde les changements|
|:q |quitte le document en cours|
|:q! |quitte sans sauvegarder le document en cours|
|:wq |enregistre le document en cours et quitte|
|:f fichier3 |enregistre le document en cours sous un autre nom|
|/test |recherche l'occurrence test et la met en surbrillance|
|v |passage en mode visualisation pour faire une sélection|
|d |coupe la sélection|
|dd |coupe la ligne entière|
|y |copie la sélection|
|yy |copie la ligne entière|
|p |colle après le curseur|
|a |ajoute après le curseur|
|A |ajoute après la ligne courante|
|i |insère avant le curseur|
|I |insère au début de la ligne courante|
|o |ouvre une nouvelle ligne en dessous de la ligne actuelle|
|O (Lettre "o" Maj) |ouvre une nouvelle ligne au-dessus de la ligne courante|
===== Remerciement =====
//Merci à //**arthefact**// et //**melodie**// d'avoir offert le tuto vi en pdf ayant insufflé cette mise à jour.// :-)