Linux vi/vim
Tous les systèmes de type Unix intègrent l'éditeur de texte vi ; d'autres éditeurs de texte peuvent ne pas nécessairement exister.
Cependant, actuellement, nous utilisons plus souvent l’éditeur vim.
vim a la capacité d’éditer des programmes ; il peut utiliser activement les couleurs de police pour distinguer l’exactitude de la syntaxe, ce qui est pratique pour la conception de programmes.
Articles connexes :La carte des raccourcis clavier Vim la plus complète — Du débutant au niveau avancé
Qu’est-ce que vim ?
Vim est un éditeur de texte développé à partir de vi. Il possède des fonctionnalités particulièrement riches qui facilitent la programmation, telles que la complétion de code, la compilation et le saut vers les erreurs, et il est largement utilisé parmi les programmeurs.
En bref, vi est un traitement de texte à l’ancienne, mais ses fonctions sont déjà assez complètes ; il reste encore des améliorations à apporter. On peut dire que vim est un outil très utile pour les développeurs de programmes.
Même le site officiel de vim (https://www.vim.org/) dit lui-même que vim est un outil de développement de programmes plutôt qu’un logiciel de traitement de texte.
carte du clavier vim
↑ Cliquez sur n'importe quelle touche pour afficher les descriptions détaillées et des exemples d'utilisation
Utilisation de vi/vim
Fondamentalement, vi/vim est divisé en trois modes :le mode Commande, le mode Insertion et le mode Ligne de commande。
Mode commande
Dès que l'utilisateur lance vi/vim, il entre en mode Commande.
Dans cet état, les actions du clavier sont reconnues par Vim comme des commandes plutôt que comme une saisie de caractères. Par exemple, si nous appuyons suri, cela ne saisira pas de caractère ;iil est traité comme une commande.
Voici plusieurs commandes couramment utilisées en mode Normal :
- i-- Passer en mode Insertion et commencer à saisir du texte à la position actuelle du curseur.
- x-- Supprimer le caractère au niveau du curseur actuel.
- :-- Passer en mode Ligne de commande pour saisir une commande sur la ligne du bas.
- a: Insérer une nouvelle ligne sous la ligne actuelle et passer en mode Insertion.
- o-- Insérer une nouvelle ligne au-dessus de la ligne actuelle et passer en mode Insertion.
- O-- Couper la ligne actuelle.
- dd-- Copier la ligne actuelle.
- yy(minuscule) -- Coller le contenu du presse-papiers sous le curseur.
- p(majuscule) -- Coller le contenu du presse-papiers au-dessus du curseur.
- P-- Annuler la dernière opération.
- u-- Rétablir la dernière opération annulée.
- Ctrl + r-- Enregistrer le fichier.
- :w-- Quitter l'éditeur Vim.
- :q-- Forcer la sortie de l'éditeur Vim sans enregistrer les modifications.
- :q!Si vous souhaitez modifier du texte, lancez simplement Vim, entrez en mode Commande, puis appuyez sur
pour passer en mode Insertion.iLe mode Commande ne dispose que de quelques-unes des commandes les plus élémentaires, vous devez donc encore vous appuyer sur
le mode Ligne de commandepour saisir plus de commandes.mode Insertion
Mode Insertion
pour passer en mode Insertion. Utilisez laitouche pour revenir en mode Normal.EscEn mode Insertion, vous pouvez utiliser les touches suivantes :
Touches de caractères et combinaisons avec Shift
- , saisir des caractères, touche Enter, nouvelle ligne
- ENTER, touche Backspace, supprime le caractère avant le curseur
- BACK SPACE, touche Delete, supprime le caractère après le curseur
- DELTouches fléchées
- , déplacer le curseur dans le texte, déplacer le curseur au début/à la fin de la ligne
- HOME/END, page précédente/suivante
- Page Up/Page Down, basculer le curseur entre les modes Insertion/Remplacer ; le curseur deviendra une ligne verticale/un trait de soulignement
- Insert, quitter le mode Insertion et passer en mode Commande
- ESCMode ligne de commande
Mode ligne de commande
(deux-points anglais) pour entrer en Mode ligne de commande.:En Mode ligne de commande, vous pouvez saisir des commandes à un seul caractère ou à plusieurs caractères ; il existe de nombreuses commandes disponibles.
En Mode ligne de commande, les commandes de base sont (les deux-points ont été omis) :
: Enregistrer le fichier.
:w: Quitter l'éditeur Vim.:q: Enregistrer le fichier et quitter l'éditeur Vim.:wq: Quitter de force l'éditeur Vim sans enregistrer les modifications.:q!La touche peut quitter le Mode ligne de commande à tout moment.
appuyez surESCEn bref, nous pouvons considérer ces trois modes comme représentés par le diagramme suivant :
Exemples d'utilisation de vi/vim
Exemples d'utilisation de vi/vim
Utilisez vi/vim pour entrer en Mode normal
Entrez directement
$ vim example.txt
vi filenameet vous entrerez dans le mode Normal de vi. Veuillez noter que vous devez toujours ajouter un nom de fichier après vi, que le fichier existe ou non !Appuyez sur i pour passer en mode Insertion (aussi appelé mode Édition) et commencer à éditer le texte.
Appuyez sur i pour passer en mode Insertion (aussi appelé mode Édition) et commencer à éditer le texte.
En mode Édition, vous constaterez que le texte –INSERT- apparaît dans la barre d'état dans le coin inférieur gauche ; c'est l'invite indiquant que vous pouvez saisir n'importe quels caractères.
À ce stade, sur le clavier, à l'exception de
cette touche, toutes les autres touches peuvent être traitées comme des boutons de saisie ordinaires, vous pouvez donc effectuer n'importe quelle édition.EscAppuyez sur la touche ESC pour revenir au mode Normal.
Appuyez sur la touche ESC pour revenir au mode Normal.
cette touche ! Vous verrez immédiatement que le – INSERT – dans le coin inférieur gauche de l'écran a disparu !EscEn mode Normal, appuyez sur
En mode Normal, appuyez sur:wqEnregistrer et quitter vi
et vous pouvez enregistrer et quitter !:wqOK ! De cette façon, nous avons créé avec succès un fichier example.txt.
Guide des touches vi/vim
Guide des touches vi/vim
Partie 1 : Déplacement du curseur, copier-coller, recherche et remplacement, etc. disponibles en mode Normal
Partie 1 : Déplacement du curseur, copier-coller, recherche et remplacement, etc. disponibles en mode Normal
| h ou touche flèche gauche (←) | |
|---|---|
| Déplacer le curseur d'un caractère vers la gauche | j ou touche flèche bas (↓) |
| Déplacer le curseur d'un caractère vers le bas | k ou touche flèche haut (↑) |
| Déplacer le curseur d'un caractère vers le haut | l ou touche flèche droite (→) |
| Déplacer le curseur d'un caractère vers la droite | Si vous placez votre main droite sur le clavier, vous constaterez que hjkl sont disposées côte à côte, vous pouvez donc utiliser ces quatre touches pour déplacer le curseur. |
| Si vous voulez vous déplacer plusieurs fois, par exemple descendre de 30 lignes, vous pouvez utiliser la combinaison de touches "30j" ou "30↓". C'est-à-dire qu'après avoir ajouté le nombre souhaité (nombre), appuyez sur l'action ! | |
| [Ctrl] + [f] | Déplacer l'écran 'vers le bas' d'une page, équivalent à la touche [Page Down] (courant) |
| [Ctrl] + [b] | Déplacer l'écran vers le haut d'une page, équivalent à la touche [Page Up] (courant) |
| [Ctrl] + [d] | Déplacer l'écran vers le bas d'une demi-page |
| [Ctrl] + [u] | Déplacer l'écran vers le haut d'une demi-page |
| + | Déplacer le curseur sur le premier caractère non blanc de la ligne suivante |
| - | Déplacer le curseur sur le premier caractère non blanc de la ligne précédente |
| n<space> | Ce n représente un « nombre », tel que 20. Après avoir appuyé sur le nombre, appuyez sur la barre d'espace et le curseur se déplacera de n caractères vers la droite sur cette ligne. Par exemple, 20<space> déplace le curseur de 20 caractères vers l'avant. |
| 0 ou la touche de fonction [Home] | Ceci est le nombre « 0 » : se déplacer vers le tout premier caractère de cette ligne (courant) |
| $ ou la touche de fonction [End] | Aller au tout dernier caractère de cette ligne (courant) |
| H | Déplacer le curseur sur le premier caractère de la ligne du haut de cet écran |
| M | Déplacer le curseur sur le premier caractère de la ligne du milieu de cet écran |
| L | Déplacer le curseur sur le premier caractère de la ligne du bas de cet écran |
| G | Aller à la dernière ligne de ce fichier (courant) |
| nG | n est un nombre. Aller à la ligne n de ce fichier. Par exemple, 20G va à la ligne 20 de ce fichier (peut être utilisé avec :set nu) |
| gg | Aller à la première ligne de ce fichier, équivalent à 1G ! (courant) |
| n<Enter> | n est un nombre. Déplacer le curseur de n lignes vers le bas (courant) |
| Rechercher et remplacer | |
| /word | Recherchez vers le bas à partir du curseur une chaîne nommée word. Par exemple, pour rechercher la chaîne vbird dans le fichier, tapez simplement /vbird ! (courant) |
| ?word | Recherchez vers le haut à partir du curseur une chaîne nommée word. |
| n | La touche « n » est une touche anglaise. Elle signifie répéter l'action de recherche précédente. Par exemple, si nous venons d'exécuter /vbird pour rechercher vers le bas la chaîne vbird, alors après avoir appuyé sur n, il continuera à rechercher vers le bas la chaîne suivante nommée vbird. Si nous avons exécuté ?vbird, alors appuyer sur n continuera à rechercher vers le haut la chaîne vbird ! |
| N | La touche « N » est une touche anglaise. Elle est exactement l'opposé de n, effectuant l'action de recherche précédente dans la direction « inverse ». Par exemple, après /vbird, appuyer sur N signifie rechercher « vers le haut » vbird. |
| Utiliser /word avec n et N est très utile ! Cela vous permet de trouver de manière répétée les mots-clés que vous recherchez ! | |
| :n1,n2s/word1/word2/g | n1 et n2 sont des nombres. Entre les lignes n1 et n2, recherchez la chaîne word1 et remplacez-la par word2 ! Par exemple, pour rechercher vbird entre les lignes 100 et 200 et le remplacer par VBIRD : ':100,200s/vbird/VBIRD/g'. (courant) |
| :1,$s/word1/word2/gou:%s/word1/word2/g | De la première ligne à la dernière ligne, recherchez la chaîne word1 et remplacez-la par word2 ! (courant) |
| :1,$s/word1/word2/gcou:%s/word1/word2/gc | De la première ligne à la dernière ligne, recherchez la chaîne word1 et remplacez-la par word2 ! De plus, avant de remplacer, affichez une invite pour que l'utilisateur confirme s'il faut remplacer ! (courant) |
| Supprimer, copier et coller | |
| x, X | Dans une ligne, x supprime un caractère vers la droite (équivalent à la touche [del]), et X supprime un caractère vers la gauche (équivalent à la touche [backspace], c'est-à-dire la touche retour arrière) (courant) |
| nx | n est un nombre. Supprimez n caractères consécutivement vers la droite. Par exemple, pour supprimer 10 caractères consécutivement, utilisez '10x'. |
| dd | Coupez toute la ligne où se trouve le curseur (courant) ; utilisez p/P pour coller. |
| ndd | n est un nombre. Coupez n lignes vers le bas à partir du curseur. Par exemple, 20dd coupe 20 lignes (courant) ; utilisez p/P pour coller. |
| d1G | Supprimez toutes les données du curseur jusqu'à la première ligne |
| dG | Supprimez toutes les données du curseur jusqu'à la dernière ligne |
| d$ | Supprimer depuis la position du curseur jusqu'au dernier caractère de la ligne |
| d0 | C'est le nombre 0. Supprimer depuis la position du curseur jusqu'au premier caractère de la ligne |
| yy | Copier la ligne où se trouve le curseur (courant) |
| nyy | n est un nombre. Copier n lignes vers le bas à partir du curseur. Par exemple, 20yy copie 20 lignes (courant) |
| y1G | Copier toutes les données depuis la ligne du curseur jusqu'à la première ligne |
| yG | Copier toutes les données depuis la ligne du curseur jusqu'à la dernière ligne |
| y0 | Copier toutes les données depuis le caractère au niveau du curseur jusqu'au début de la ligne |
| y$ | Copier toutes les données depuis le caractère au niveau du curseur jusqu'à la fin de la ligne |
| p, P | p colle les données copiées sur la ligne sous le curseur, et P les colle sur la ligne au-dessus du curseur ! Par exemple, si le curseur se trouve actuellement sur la ligne 20 et que 10 lignes de données ont été copiées, alors après avoir appuyé sur p, ces 10 lignes seront collées après la ligne 20 d'origine, c'est-à-dire à partir de la ligne 21. Mais que se passe-t-il si vous appuyez sur P ? Alors la ligne 20 d'origine sera repoussée vers le bas pour devenir la ligne 30. (courant) |
| J | Joindre la ligne où se trouve le curseur avec les données de la ligne suivante en une seule ligne |
| c | Répéter la suppression de plusieurs données, par exemple, supprimer 10 lignes vers le bas, [10cj] |
| u | Annuler l'action précédente. (courant) |
| [Ctrl]+r | Refaire l'action précédente. (courant) |
| Les touches u et [Ctrl]+r sont des commandes très courantes ! L'une sert à annuler, l'autre à refaire. Avec ces deux touches de fonction, votre édition, héhé ! sera plutôt agréable ! | |
| . | N'en doutez pas ! C'est le point décimal ! Il signifie répéter l'action précédente. Si vous voulez répéter une suppression, un collage, etc., appuyez simplement sur le point décimal '.' ! (courant) |
Partie 2 : Description des touches disponibles pour passer du mode Normal au mode Édition
| Entrer dans le mode d'édition de saisie ou de remplacement | |
|---|---|
| i, I | Entrer en mode insertion : i signifie « saisir à partir de la position actuelle du curseur », I signifie « commencer la saisie à partir du premier caractère non espace de la ligne actuelle ». (courant)) |
| a, A | Entrer en mode insertion : a signifie « commencer la saisie à partir du caractère qui suit le curseur actuel », A signifie « commencer la saisie à partir du dernier caractère de la ligne actuelle ». (courant)) |
| o, O | Entrer en mode insertion : Ce sont les formes majuscule et minuscule de la lettre anglaise o. o ouvre une nouvelle ligne sous la ligne actuelle du curseur ; O ouvre une nouvelle ligne au-dessus de la ligne actuelle du curseur ! (courant)) |
| r, R | Passer en mode remplacement : r ne remplace qu'une seule fois le caractère unique à l'emplacement du curseur ; R continue de remplacer le texte à l'emplacement du curseur jusqu'à ce que ESC soit enfoncé ; (courant)) |
| Parmi les touches ci-dessus, le texte "--INSERT--" ou "--REPLACE--" apparaîtra dans le coin inférieur gauche de l'écran vi. Vous pouvez savoir de quelle action il s'agit d'après le nom !! Notez en particulier, comme nous l'avons mentionné ci-dessus, que lorsque vous voulez saisir des caractères dans le fichier, vous devez voir INSERT ou REPLACE dans le coin inférieur gauche avant de pouvoir saisir ! | |
| [Esc] | Quitter le mode édition et revenir au mode normal (courant)) |
Partie 3 : Description des touches disponibles pour passer du mode Normal au mode Ligne de commande
| Commandes pour enregistrer, quitter, etc. en mode ligne de commande | |
|---|---|
| :w | Écrire les données modifiées dans un fichier sur le disque dur (courant)) |
| :w! | Si l'attribut du fichier est "read-only", forcez l'écriture dans ce fichier. Cependant, le fait que vous puissiez réellement écrire dépend encore de vos permissions de fichier pour ce fichier ! |
| :q | Quitter vi (courant)) |
| :q! | Si vous avez modifié le fichier mais ne voulez pas l'enregistrer, utilisez ! pour forcer la sortie sans enregistrer le fichier. |
| Notez que le point d'exclamation (!) dans vi signifie souvent « force ». | |
| :wq | Enregistrer puis quitter ; s'il s'agit de :wq!, cela force l'enregistrement puis quitte (courant)) |
| ZZ | C'est un Z majuscule ! Si le fichier a été modifié, enregistrez le fichier courant, puis quittez ! Cela équivaut à (enregistrer et quitter). |
| ZQ | Ne pas enregistrer, forcer à quitter. Équivalent à:q!。 |
| :w [filename] | Enregistrez les données modifiées dans un autre fichier (semblable à Enregistrer sous). |
| :r [filename] | Pendant l'édition, lire les données d'un autre fichier. C'est-à-dire ajouter le contenu du fichier 'filename' après la ligne où se trouve le curseur. |
| :n1,n2 w [filename] | Enregistrer le contenu de n1 à n2 dans le fichier filename. |
| :! command | Quitter temporairement vi et exécuter la commande pour afficher le résultat en mode ligne de commande ! Par exemple ':! ls /home' vous permet de visualiser les informations de fichier produites par ls sous /home dans vi ! |
| Modifier l'environnement vim | |
| :set nu | Afficher les numéros de ligne. Après le paramétrage, le numéro de ligne sera affiché comme préfixe sur chaque ligne. |
| :set nonu | L'opposé de set nu, il annule les numéros de ligne ! |
Faites particulièrement attention : dans vi/vim, les nombres sont très significatifs ! Un nombre signifie généralement répéter quelque chose autant de fois ! Il peut aussi signifier aller à un certain "nième" élément.
Par exemple, pour supprimer 50 lignes, vous utilisez '50dd', n'est-ce pas ! Le nombre est placé avant l'action. Par exemple, si je veux descendre de 20 lignes, alors '20j' ou '20↓' fera l'affaire.
Autres extensions