Commandes de bases
Sommaire |
Les commandes de bases de ViM
Attention: Ceci n'a pas pour but de vous apprendre ViM, ceci est juste un rappel des fonctions de bases en cas de trous de mémoire par exemple. Si vous ne connaissez pas ViM, rendez vous sur cette page.
Remarque: la plupart des opérateurs acceptent une sélection ou un mouvement en préfixe, et le nombre de fois qu'ils doivent s'exécuter en suffixe. Par exemple 3dtg va s'exécuter trois fois pour supprimer à chaque fois jusqu'au prochain caractère « g » de la ligne courante.
Remarque: certaines commandes acceptent un intervalle en préfixe. Par exemple :12,42s/toto/titi/ va s'exécuter de la ligne 12 à la ligne 42 pour remplacer à chaque fois la première occurrence de « toto » par « titi ».
Note: <n> représente un nombre et <s> représente un caractère. Les deux sont souvent optionnels.
| Commande | Alternative | Explication |
|---|---|---|
| k | ↑ | Se déplacer vers le haut |
| j | ↓ | Se déplacer vers le bas |
| h | ← | Se déplacer vers la gauche |
| l | → | Se déplacer vers la droite |
Note: les touches fléchées marchent aussi, mais pas forcément si vous êtes connecté à un PC distant qui n'a pas la même configuration clavier que vous.
Les sélections
| Commande | Alternative | Explication |
|---|---|---|
aw
|
Un mot | |
as
|
Une phrase (sentence) | |
ap
|
Un paragraphe | |
a(, a[, a<, a{
|
Un bloc délimité | |
a", a', a`
|
Un bloc encadré de guillemets | |
at
|
Une balise (tag) à la XML |
Le a (aw, a word) peut être remplacé par un i (iw, inner word) pour ne pas prendre en compte les délimiteurs (dans le cas d'un mot, l'espace qui le suit).
Les mouvements
| Commande | Alternative | Explication |
|---|---|---|
$
|
Aller en fin de ligne | |
0
|
Aller en début de ligne | |
^
|
Aller au premier caractère qui n'est pas un espace ou une tab de la ligne | |
gg
|
Aller en début de document | |
G
|
Aller en fin de document | |
:<n>
|
Aller à la ligne <n> (où <n> est un nombre entier)
| |
f<s>
|
Jusqu'au caractère <s> en allant vers l'avant
| |
F<s>
|
Jusqu'au caractère <s> en allant vers l'arrière
| |
t<s>
|
Jusqu'au caractère <s> en allant vers l'avant et en s'arrêtant juste avant
| |
T<s>
|
Jusqu'au caractère <s> en allant vers l'arrière et en s'arrêtant juste avant
|
Les intervalles
| Commande | Alternative | Explication |
|---|---|---|
<n>
|
La ligne n
| |
.
|
La ligne courante | |
%
|
Toutes les lignes du fichier | |
/<motif>/
|
La prochaine ligne vérifiant le motif | |
$
|
Dernière ligne | |
<spec1>,<spec2>
|
De la spécification de ligne 1 à la spécification de ligne 2 |
Les modes
| Commande | Alternative | Explication |
|---|---|---|
| i | Entre en mode insertion au niveau du curseur | |
| a | li | Entre en mode insertion après le curseur |
| A | $a | Entre en mode insertion sur le dernier caractère |
| o | A<Entrée> | Insère une ligne vide sous le curseur, place le curseur sur cette ligne, et entre en mode édition |
| O | Idem mais une ligne au dessus du curseur | |
| v | Entre en mode visuel | |
| V | Entre en mode visuel par ligne | |
| <C-v> | Entre en mode visuel par bloc | |
| R | Entre en mode remplacement | |
| <Echap> | <C-c> | Entre en mode normal |
| : | Entre en mode commande (vous devez être en mode normal) | |
| <C-o> | En mode insertion, retourne en mode normal pour une seule commande, puis retourne en mode insertion juste après |
Pour quitter le mode visuel, vous devrez appuyer deux fois sur une touche de changement de mode, par exemple deux fois sur la touche <Echap> ou i.
Suppression
| Commande | Alternative | Explication |
|---|---|---|
| x | Le caractère sous le curseur | |
| s | Comme x mais entre en mode insertion après
| |
| dd | La ligne sous le curseur | |
| dw | Le mot sous le curseur | |
| d$ | D | Supprime jusqu'à la fin de la ligne |
d<mouvement>
|
Du curseur à la cible du déplacement | |
d<sélection>
|
La sélection précisée | |
| c | Se comporte comme d mais entre en mode insertion après la suppression
| |
| u | Annulation de la dernière action | |
| CTRL+R | Remettre (annuler l'annulation) |
Note 1: <mouvement> est un objet, comme par exemple G qui signifie la fin du document, gg le début, ↑ la ligne d'au-dessus, etc.
Note 2: <sélection> est un objet, comme par exemple aw qui signifie un mot, ap un paragraphe, etc.
Note 3: Bien entendu, d (et c) accepte un nombre pour agir de manière répétitive, par exemple 5dd supprimera 5 lignes.
Recherche
| Commande | Alternative | Explication |
|---|---|---|
| /<s> | Recherche vers le bas la chaîne de caractères, supporte les regex | |
| ?<s> | Recherche vers le haut la chaîne de caractères, supporte les regex | |
| n | Passe à l'élément suivant correspondant à la chaîne de caractères recherchée | |
| N | Passe à l'élément précédent correspondant à la chaîne de caractères recherchée | |
| * | Cherche l'occurrence suivante du mot sous le curseur | |
| # | Cherche l'occurrence précédente du mot sous le curseur |
Remplacement
Le caractère sous le curseur r puis le caractère que l'on veut mettre.
Exemple: sur le mot "lepin", se positionner sur le "e", puis faire un ra remplacera le "e" par un "a".
Entrer en mode remplacement: <Insert><Insert> (double appui sur la touche <Insert>) vous permettra d'entrer en mode remplacement, c'est à dire que le texte que vous saisirez remplacera ce qu'il y a en dessous du curseur. La touche R permet également de le faire.
Copier
On copie généralement avec y, mais il faut savoir que tout ce qui est supprimé est enregistré dans le presse-papier.
Un simple x ou d70d enregistrera la suppression.
On utilise ensuite p pour coller après le curseur, et P pour coller avant.
y se comporte de manière très similaire à d (ou c).
| Commande | Alternative | Explication |
|---|---|---|
| yy | Copie une ligne | |
| yw | Copie un mot | |
| y$ | Copie du curseur à la fin de la ligne | |
| ygg | Copie du curseur au début du document | |
y<mouvement>
|
Copier jusqu'à la cible du mouvement | |
y<sélection>
|
Copier la sélection précisée | |
| p | Coller |
Sauvegarde
| Commande | Alternative | Explication |
|---|---|---|
| :w | Sauvegarder | |
| :q | Quitter | |
| :q! | Quitter sans enregistrer | |
| :wq | :x | Quitter et enregistrer |
| :saveas | Enregistre désormais le fichier sous ce nom | |
| :up | :update | Enregistre le buffer courant si il a été modifié. |
Pour les codeurs
| Commande | Alternative | Explication |
|---|---|---|
| == | Réindente la ligne sous le curseur | |
| gg=G | Réindente tout le document | |
| =i{ | =a{ | Réindente tout le bloc courant, accolades exclues (inner-bloc) ou inclues (a) |
| K | Va essayer de trouver la documentation correspondant au mot sous le curseur |
Très pratique si vous avez de très mauvais profs qui vous filent du code pas indenté, ou tout simplement si vous virez des lignes de code. Attention : quelques problèmes avec PHP.
En mode insertion
Vim possède également un grand nombre de commandes en mode insertion, elles sont cependant bien moins connues.
| Commande | Alternative | Explication |
|---|---|---|
| <C-y> | Recopie le caractère qui est à l'emplacement du caractère à la ligne du dessus | |
| <C-j> | Ajoute un \n
|
Suppression
| Commande | Alternative | Explication |
|---|---|---|
| J | Joint la ligne courante avec la suivante | |
| <C-a> | Incrémente le nombre en dessous du curseur | |
| <C-x> | Décrémente le nombre en dessous du curseur |
Les commandes avancées de ViM
Split
| Commande | Alternative | Explication |
|---|---|---|
| :vsp | :vsplit | Splite verticalement |
| :sp | :split | Splite horizontalement |
Avant toute commande, il faudra faire CTRL+W.
| Commande | Alternative | Explication |
|---|---|---|
| CTRL+W | Va au viewport suivant (faire deux fois CTRL+W)
| |
| CTRL+<direction> | <direction> représente les touches de déplacement h, j, k ou l. Permet d'aller au viewport de gauche, dessous, haut, ou droite
| |
| + | Agrandit le viewport où se situe le curseur (on peut préciser une taille avant le "+")
| |
| l | Réduit le viewport actuel | |
| = | Égalise la taille des viewports | |
| r | Echange les viewports | |
| R | Idem en sens inverse | |
| q | Ferme le viewport actuel |
Buffers
| Commande | Alternative | Explication |
|---|---|---|
| :b <nom du fichier> | Edite le <fichier> présent dans le buffer (utilisez la touche tab !)
| |
| :b <n> | Edite le fichier <n> du buffer
| |
| :sb <fichier/n> | Similaire à :b mais effectue un split
| |
| :bn | :bnext | Buffer suivant |
| :bp | :bprevious | Buffer précédent |
| :e <fichier> | Ouvrir <fichier> dans un nouveau buffer
|
Onglets
| Commande | Alternative | Explication |
|---|---|---|
| :tabnew <fichier> | Créer un nouvel onglet | |
| :tabnext | gT | Aller à l'onget suivant |
| :tabprevious | gt | Aller à l'onget précedent |
| :tabclose | Ferme l'onglet actuel |
Note: <fichier> n'est pas obligatoire, sans <fichier> ouvre un onglet vide.
Pour plus d'informations sur les onglets :help tabe.
Remplacements
| Commande | Alternative | Explication |
|---|---|---|
:<intervalle>s/<ancien>/<nouveau>/<options>
|
:su :substitute
|
Remplace <ancien> par <nouveau>
|
:g/<string>/d
|
Supprime toutes les lignes qui contiennent <string>
| |
:v/<string>/d
|
Supprime toutes les lignes qui ne contiennent pas <string>
|
Ce sont des commandes complexes et puissantes qui acceptent des expressions régulières. Elle sont souvent équivalentes à celles de sed ou ed.
Si aucun intervalle n'est indiquée à :s, elle s'applique sur la ligne courante.
Les options le plus souvent utilisées sont:
-
gpour appliquer le remplacement à tous les<ancien>et pas seulement au premier -
cpour demander une confirmation avant d'effectuer le remplacement -
ipour ne pas tenir compte de la casse
Shell
| Commande | Alternative | Explication |
|---|---|---|
| :!<commande> | Envoie la <commande> dans votre shell bash/zsh/dos/etc ...
| |
| :r !<commande> | Ecrit le résultat de la <commande> sous votre curseur (essayez un :r !ls)
|
Actions sur le texte
| Commande | Alternative | Explication |
|---|---|---|
| < | Enlève un alinéa sur la ligne courante | |
| <G | Enlève un alinéa jusqu'à la fin du document | |
| <n< | n<< | Enlève un alinéa sur n lignes
|
| > | Ajoute un alinéa sur la ligne courante (>G et >n> fonctionnent)
| |
| :[plage]move <n> | :m | Déplace les lignes de la page à l'endroit indiqué (<n>)
|
| :[plage]change <n> | :c | Comme :m sauf que cela les copie
|
| :vmap tv !perltidy -ce -q <CR> | Permet de réindeter les lignes sélectionnées. Il faudra avoir perltidy d'installé |
Divers
| Commande | Alternative | Explication |
|---|---|---|
g?<sélection>, g?<mouvement>
|
Convertit le texte correspondant à la sélection ou jusqu'à la cible du mouvement en (fr) rot13 | |
CTRL+a
|
Incrémente le nombre sous le curseur | |
CTRL+x
|
Décrémente le nombre sous le curseur | |
~
|
Inverse la casse de la lettre sous le curseur | |
Vu
|
Minimise la casse de la ligne (V peut être remplacé par v)
| |
VU
|
Maximise la casse de la ligne | |
:e .
|
:browse e
|
Ouvre un navigateur de fichiers |
:Sex
|
Splite l'écran et ouvre le navigateur de fichier (oui je l'ai mis uniquement parce que la commande c'est Sex)
| |
gf
|
Ouvre le fichier dont le nom est sous le curseur | |
:%!fmt
|
Aligne tout le texte | |
:ab <abrévation> <mot>
|
Définit une abréviation pour un mot, le remplacement sera automatique si un espace suit l'abréviation dans le mode insertion |