Skip to content

Instantly share code, notes, and snippets.

@Alyxdev-xyz
Last active April 27, 2026 14:16
Show Gist options
  • Select an option

  • Save Alyxdev-xyz/2e1ace4f5a5277cc6fb0897a79ef5b77 to your computer and use it in GitHub Desktop.

Select an option

Save Alyxdev-xyz/2e1ace4f5a5277cc6fb0897a79ef5b77 to your computer and use it in GitHub Desktop.

Aperçu

Ceci est un document que je remplis au fur et à mesure afin de conserver et mieux retenir les différentes actions dans Vim.

Index

  1. Navigation
  2. Marqueurs
  3. Propriétés du fichier
  4. Opérations
  5. Édition
  6. Fenêtres
  7. Buffers
  8. Commandes
  9. vimgrep
  10. .vimrc
  11. Netrw
  12. Plugins

Navigation

  • gg : Première ligne
  • G : Dernière ligne
  • 0 : Début de ligne
  • ^ : Premier caractère visible de la ligne courante
  • + : Premier caractère visible de la ligne suivante
  • - : Premier caractère visible de la ligne précédente
  • $ : Fin de ligne
  • w : Début de mot suivant
  • b : Début de mot précédent
  • e : Fin de mot suivant
  • ge : Fin de mot précédent
  • H : Délacer le curseur en haut de l’écran
  • M : Délacer le curseur au milieu de l’écran
  • L : Délacer le curseur en bas de l’écran
  • <C-e> : Défiler vers le bas
  • <C-y> : Défiler vers le haut
  • <C-d> : Défiler une ½ page vers le bas
  • <C-u> : Défiler une ½ page vers le haut
  • <C-f> : Défiler une page vers le haut
  • <C-b> : Défiler une page vers le haut
  • / / ? : Recherche de mot vers le bas / le haut
  • * / $ : Recherche le mot sous le curseur vers le bas / le haut
  • <C-o> : Naviguer en arrière dans l’historique d’édition
  • <C-i> : Naviguer en avant dans l’historique d’édition
  • z. : Centre la vue sur le curseur
  • z<CR> : Déplace la vue pour mettre le curseur en haut
  • z- : Déplace la vue pour mettre le curseur en bas
  • v : Passer en mode Visuel
  • V : Passer en mode Visuel par ligne
  • <C-q> : Passer en mode Visuel par bloc
  • Q : Passer en mode Ex

Marqueurs

On peut enregistrer une position pour y revenir plus tard ou pour l’utiliser dans une commande.

  • m[a-z] : Enregistre un marqueur avec une lettre (de a à z)
  • m[A-Z] : Enregistre un marqueur global avec une lettre majuscule (de A à Z), accessible depuis n’importe quel fichier
  • `[a-z] : Déplace le curseur sur le marqueur
  • '[a-z] : Déplace le curseur sur la ligne du marqueur

Les marqueurs peuvent êtres aussi utilisés dans les commandes ou les portées.

Propriétés du fichier

  • <C-g> : Afficher les infos du fichier
  • g<C-g> : Afficher les infos de quantité du fichier (nombre de lignes, mots, caractères)

Opérations

  • <C-a> : Ajouter 1 au nombre sous le curseur. Prend en compte la base du nombre en fonction de son préfixe (0b : binaire, 0x : hexadécimal, 0 : octal)
  • 12<C-a> : Ajouter 12 au nombre sous le curseur
  • <C-x> : Retirer 1 au nombre sous le curseur

On peut définir ce qui est reconnu comme un nombre :

nrformats+=octal
nf-=bin
  • alpha : Une lettre seule, pour les index de titles etc
  • octal : Un nombre préfixé avec un 0 sera reconnu comme étant en base 8
  • hex : Un nombre préfixé avec 0x sera reconnu comme étant en base 16
  • bin : Un nombre préfixé avec 0b sera reconnu comme étant en base 2
  • unsigned : Le tiret devant un nombre est ignoré et est reconnu comme étant un nombre positif

Édition

  • a : Rentre en mode édition au caractère suivant
  • i : Rentre en mode édition sous le curseur
  • A : Rentre en mode édition à la fin de la ligne
  • I : Rentre en mode édition devant le premier caractère visible de la ligne
  • R : Rentre em mode remplacement sous le curseur

Registres

Les registres sont des tampons mémoire qui servent à enregistrer du texte pour un usage ultérieur. Ils sont nommés avec les lettres de l’alphabet et certains registres sont prédéfinis avec un comportement particulier.

  • a-z : Les registres d’utilisation générale que l’on peut invoquer à souhaits
  • 0-9 : Historique de registres quand on copie une ligne, 0 étant le registre le plus récent
  • " : Registre temporaire, utilisé quand on fait une suppression notamment
  • = : Registre d’expression, permet de saisir une expression qui sera évaluée et utilisée en tant que texte

Suppression

  • dl : Supprimer un caractère
  • dd : Supprimer une ligne
  • d4d : Supprimer 4 lignes
  • di( : Supprimer à l’intérieur des parenthèses
  • dib : Supprimer à l’intérieur du bloc (parenthèses)
  • da( : Supprimer les parenthèses et son contenu
  • dgn : Supprimer la prochaine occurrence de la recherche
  • dn : Supprimer jusqu’à la prochaine occurrence de la recherche

Il y a aussi d’autres objets que l’on peut utiliser pour la suppression ou d’autres action

  • e : jusqu’à la fin du mot
  • w : jusqu’au début du mot suivant
  • E : Avant le prochain espace
  • W : Après le prochain espace
  • t : Supprimer le contenu d’un tag XML
  • s : Supprimer la phrase
  • p : Supprimer le paragraphe

Pendant le mode d’édition, certains raccourcis changent :

  •  : Passer en mode Commande pour la prochaine frappe
  •  : Indenter la ligne
  •  : Désintenter la ligne
  •  : Insérer le caractère tabulation
  •  : Insérer le caractère retour chariot
  • <C-[> : Insérer le caractère échap
  •  : Insérer le caractère retour (backspace)

Correction orthographique

  • :setlocal spell spelllang=fr : Active la correction orthographique et définit le dictionnaire sur Français
  • z= : Affiche une liste de suggestion de correction du mot sous le curseur (correction orthographique en anglais par défaut)
  • zg : Ajouter le mot sous le curseur au dictionnaire
  • zw : Retirer le mot sous le curseur du dictionnaire

En mode insertion, on peut également taper s pour afficher la liste de suggestion

Replis

On peut réduire certaines portions de code pour les masquer et parcourir le code plus vite. On peut les ouvrir et les fermer, les inclure dans d’autres replis et les supprimer.

  • zf[unité] : Créer un replis. On peut utiliser différentes unités, comme 4j pour les 4 lignes suivantes, ou % pour tout ce contenu de la parenthèse, crochet ou accolade.
  • zo : Ouvre un replis fermé.
  • zO : Ouvre tous les replis sous le curseur.
  • zc : Ferme un replis ouvert.
  • zM : Ferme tous les replis du document.
  • zd : Supprime le repli sous le curseur.
  • zE : Supprime tous les replis du document.
  • zj : Déplace le curseur au prochain repli.
  • zk : Déplace le curseur au prédédent repli.
  • zm : Augmente le niveau du repli.
  • zr : Réduit le niveau du repli.
  • [z : Déplace le curseur au début du replis.
  • ]z : Déplace le curseur à la fin du replis.

Fenêtres

  • <C-w>s : Split horizontal
  • <C-w><C-w> : Focus fenêtre suivante
  • <C-w><C-W> : Focus fenêtre précédente
  • <C-w>r : Faire défiler les fenêtres horizontalement (comme dans un carousel)
  • <C-w>R : Faire défiler les fenêtres verticalement
  • <C-w>L : Déplace la fenêtre complètement à droite
  • <C-w>H : Déplace la fenêtre complètement à gauche
  • <C-w>K : Déplace la fenêtre tout en haut
  • <C-w>J : Déplace la fenêtre tout en bas
  • <C-w>T : Déplacer la fenêtre dans un nouvel onglet
  • :sb# : Ouvrir le buffer # dans une nouvelle vue splitée horizontalement
  • :vert sb# : Ouvrir le buffer # dans une nouvelle vue splitée verticalement
  • gt : Naviger à l’onglet suivant
  • gT : Naviger à l’onglet précédent
  • :resize 20 : Redimensionner la fenêtre courante à 20 caractère de haut
  • :vertical resize +8 : Redimensionner la fenêtre courante de 8 caractères de plus en largeur
  • :tabnew [fichier] : Ouvre le [fichier] dans un nouvel onglet
  • :tabm 0 : Déplacer l’onglet à la position 0
  • :tabm : Déplace l’onglet à la fin de la liste

Buffers

Les buffers servent à gérer les différents fichiers ouverts, ils sont identifiés par leur nom ou un identifiant unique.

  • :ls : Liste les fichiers ouvert
  • :badd : Ouvrir un fichier sans l’afficher
  • :bdelete file1 : Retire le fichier file1 du buffer (Fermer un fichier)
  • :bdelete 2 : Retire le buffer numéro 2 de la liste
  • :3,5bdelete : Retire les fichiers 3, 4 et 5 du buffer
  • :bwipeout : Similaire à bdelete mais retire réellement la référence de la liste
  • :bn : Afficher le buffer suivant
  • :bp : Afficher le buffer précédent
  • :b# : Afficher le buffer ouvert précédement
  • <C-6> : Raccourci pour ouvrir le buffer précédement affiché

Commandes

Tags

  • :tag [mot] : Déplace le curseur à la déclaration du symbole mot, change de fichier si nécessaire
  • :tselect [mot] : Affiche la liste des déclarations du symbole mot, pratique pour différencier les homonymes

Set

  • :set hls : Surligne les résultats de recherche
  • :set number|nu : Affiche les numéros de ligne
  • :set relativenumber|rnu : Affiche le nombre relatif de ligne par rapport au curseur
  • :set modifiable : Permet la modification du document (activé par défaut)

Peuvent êtres désactivés en ajoutant no en suffixe de l’option

Déplacer

  • :m20 : Déplace la ligne courante à la ligne 20
  • :m+20 : Déplace la ligne courante de 20 lignes vers le bas
  • :m'ma : Déplace la ligne courante à la ligne du marqueur a

Insertion

  • :a[ppend] : Passe en mode ajout de texte dans la ligne de commande, jusqu’à ce qu’un point (.) seul sur une ligne termine la commande, alors le texte est ajouté après le curseur.
  • :i[nsert] : Passe en mode insertion de texte dans la ligne de commande, jusqu’à ce qu’un point (.) seul sur une ligne termine la commande, alors le texte est ajouté sous le curseur.

Changements

  • :changes : Affiche la liste des changements du buffer actuel. On peut utiliser g, et g; pour naviguer en avant/arrière aux positions des derniers changements. La liste est persistante au fil des sessions.

Commande normale

La commande :norm effectue les frappes suivantes comme si elles étaient effectuées en mode normal. Pratique pour transformer des séries de touches en commandes.

  • :norm 5j : Déplace le curseur de 5 lignes vers le bas.

Commande globale

La commande :g effectue une commande Ex par ligne de manière globale.

  • :g/<pattern>/ : Affiche toutes les lignes qui comportent le pattern (par défaut, utilise m comme commande)
  • :g/<pattern>/d : Supprime toutes les lignes qui comportent le pattern
  • :10,20g/<pattern>/d : Supprime toutes les lignes qui comportent le pattern de la ligne 10 à 20

Substitutions (Remplacer)

  • :s/mot/word : Remplace le premier mot par word dans la ligne
  • :s/mot/word/g : Remplace toutes les occurrences de mot par word dans la ligne
  • :%s/mot/word/g : Remplace toutes les occurrences de mot par word dans tout le document
  • :%s/mot/word/gc : Remplace toutes les occurrences de mot par word dans tout le document en demandant confirmation à chaque occurrence
  • :<10,17>s/mot/word/gc : Remplace toutes les occurrences de mot par word de la ligne 10 à 17 en demandant confirmation à chaque occurrence

Fonctionne avec le mode Visuel.

On peut tout à fait remplacer le / par un autre délimiteur (comme %, $ ou #). _apiService.GetShopDetails(_decodeJwt.data.id_org_internal);

vimgrep

La commande :vimgrep permet de chercher du texte dans l’ensemble des fichiers du dossier et sous-dossiers. Il suffit de l’invoquer comme ci-dessous:

  • :vimgrep "text" **/*.java : Cherche le mot "text" dans tous les fichiers java du projet
  • :cw, :copen : Ouvrir le panneau des correspondances
  • :cclose, :ccl : Ferme le panneau des correspondances
  • :cnext, :cn : Affiche la prochaine occurrence dans le fichier à la ligne correspondante
  • :cprev, :cp : Affiche la précédente occurrence dans le fichier à la ligne correspondante

.vimrc

Netrw : Gestionnaire de fichier intégré

Le gestionnaire de fichier intégré à Vim. Plusieurs manières pour l’invoquer :

  • :Explore[!] : explore en full screen, Hsplit si fichier non enregistré, Vsplit si !
  • :Hexplore[!] : explore en Hsplit en bas, en haut si !
  • :Vexplore[!] : explore en Vsplit à gauche, à droite si !
  • :Sexplore[!] : explore en Hsplit en haut, en Vsplit à gauche si !
  • :Texplore : explore dans un nouvel onglet
  • :Lexplore : tout comme Vexplore mais ouvre le fichier dans la fenêtre invocatrice

On peut ajouter le chemin racine en premier paramètre.

Une fois dedans :

  • u : Revenir en arrière
  • - : Parcourir le dossier parent
  • p : Ouvre un aperçu
  • <C-w>z : Ferme l’aperçu
  • gh : Bascule la visibilité des fichiers cachés
  • R : Renommer un fichier
  • % : Créer un nouveau fichier dans Vim
  • mt : Définit le dossier cible (pour la prochaine opération)
  • mf : Marque un fichier/dossier (pour la prochaine opération)
  • mc : Copier les éléments marqués
  • mm : Déplacer les éléments marqués
  • d : Créer un dossier
  • D : Supprimer un fichier/dossier

Ressources:

Using Netrw, vim's builtin file explorer

Plugins à voir

Ack

Rechercher dans des fichiers. S’utilise comme ça : [L]Ack [fichier] [pattern]

Repeat

Permet aux pluging de pouvoir être répétées avec .. (github)

Surround

Entoure les mots/objets avec des guillemets, parenthèses, balises html… (github)

Auto-pairs

Ajoute les parenthèses, crochets et accolades correspondantes automatiquement. (LunarWatcher/auto-pairs)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment