Commandes de bases

De Vim-fr.


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 commandes acceptent soit une portée, soit le nombre de fois qu'elle doit s'exécuter. Par exemple 3dtg va supprimer jusqu'au troisième caractère "g" de la ligne courante.

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 portées

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 modes

Commande Alternative Explication
i Entre en mode insertion au niveau du curseur
a li Entre en mode insertion apres 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 seul 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<endroit> Du curseur à <endroit>
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: <endroit> est un objet, comme par exemple G qui signifie la fin du document, gg le début etc...

Note 2: 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ère 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 appuie sur la touche Insert ) vous permettra d'entrer en mode remplacement : C'est à dire que le texte que vous saisissez remplace 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
p Coller


Sauvegarde

Commande Alternative Explication
:w Sauvegarder
:q Quitter
:q! Quitter sans enregistrer
:wq :x Quitter et enregistrer
:saveas Enregistre désormait 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 Split verticalement
:sp :split Split 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 hjkl. Permet d'aller au viewport de gauche, dessous,haut, ou droite
+ Agrandit le viewport ou 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
:<portée>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 sed ou à celles de ed. Si aucune portée n'est indiqué à :s, elle s'applique sur la ligne courante. Les options le plus souvent utilisées sont:

  • g pour appliquer le remplacement à tous les <ancien> et pas seulement au premier
  • c pour demander une confirmation avant d'effectuer le remplacement
  • i pour ne pas tenir compte de la case

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 copies
:vmap tv !perltidy -ce -q <CR> Permet de réindeter les lignes sélectionnés. Il faudra avoir perltidy d'installer.

Divers

Commande Alternative Explication
g?<portée> convertie le texte sous la portée en (fr) rot13
CTRL+a Incrémente le nombre sous le curseur
CTRL+x Décrémente le nombre sous le curseur
~ Inverse la case de la lettre sous le curseur
Vu Minimise la case de la ligne (V peut être remplacé par v)
VU Maximise la case 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éfinir une abréviation pour un mot, le remplacement sera automatique si un espace suit l'abréviation dans le mode insertion

Voir aussi