Bienvenue sur ce wiki - vim cheat home page

  • gg, au début du fichier.
  • G, à la fin du fichier.
  • w, au début du prochain mot.
  • e, à la fin du mot actuel/suivant.
  • b, au début du mot précédent/actuel .
  • :10 ou 10G, à la ligne 10.
  • Ces mêmes commandes peuvent servir de paramètre, comme pour l'action d(delete).

Essayez alors de supprimer des mots via dw, de et db.

Idem, pour des lignes entières : d$, d0, ou dd

Caractères

  • x supprime le caractère sous le curseur.
  • d supprime une chaine de caractères définie par un paramètre. l'instruction d est également disponible en tant que commande (commençant par :). Pour d la syntaxe est :[debut],[fin]d.
Exemple :

5,10d va tout supprimer entre les lignes 5 et 10. À retenir qu'il existe certains caractères spéciaux pour définir le début et la fin :

. → la ligne du curseur $ → la dernière ligne % → toutes les lignes Si vous voulez annuler une action, utilisez u(undo).

D'autre macros/actions en vrac

  • r → remplace le caractère sous le curseur
  • a → entre en mode insertion après le curseur
  • :.,$-3d → supprime toutes les lignes entre la ligne du curseur et les 3 dernières lignes du fichier
  • o → entre en mode insertion en créant une nouvelle ligne
  • O → entre en mode insertion en créant une nouvelle ligne au-dessus
  • dG → supprime toutes les lignes du curseur à la fin du fichier
  • dgg → supprime toutes les lignes du curseur au début du fichier

Mode visuel

Le mode visuel est le seul que nous n'avons pas encore abordé. Il permet de sélectionner du texte et d'y appliquer une macro.

En mode normal, appuyez sur v pour entrer en mode visuel. Vous pouvez alors vous déplacer avec les touches directionnelles pour sélectionner du texte.

Une fois le texte sélectionné, vous pouvez appliquer une macro comme d pour le couper.

👀 Car oui, je vous ai menti ! d ne permet pas de supprimer mais de couper. La différence est que le texte coupé est stocké dans un presse-papier (clipboard).

Comme vu dans la précédente animation, il est possible de continuer à utiliser les raccourcis de déplacement en mode visuel.

Vous pouvez aussi directement sélectionner la ligne entière avec V.

Pour copier une sélection, utilisez y (yank).

Recherche

  • / → recherche vers le bas
  • ? → recherche vers le haut
  • n → recherche le prochain résultat
  • N → recherche le résultat précédent

Vim + sed = <3

Sed est un outil en ligne de commande permettant de modifier du texte. Il est très utilisé dans les scripts de déploiement pour modifier des fichiers de configuration. Celui-ci est intégré nativement à Vim avec la commande s.

  • En bash : sed -i 's/old/new/g' file.txt
  • Sur Vim : :[debut],[fin]s/old/new/g

Comme pour :d, :s est une commande qui prend en paramètre un début et une fin. Le début et la fin peuvent être des lignes ou des caractères spéciaux comme . ou %.

Simple remplacement de texte : Cigale par Bestiole avec :1,2s/Cigale/Bestiole/

Commenter plusieurs lignes via sed

  • v → entrer en mode visuel Sélection des lignes via les flèches
  • '<, '>s/^/#/ → ajouter un # au début de chaque ligne sélectionnée D'autres raccourcis en mode visuel
  • (mode normal) gv → réappliquer la dernière sélection visuelle
  • (mode visuel) o → se placer au début/fin de la sélection
  • (mode visuel) u et U → Lowercase/uppercase
  • (mode visuel) ~ → inverser la case
  • (mode visuel) > et < → Ajouter/supprimer l'indentation

Gestion des Buffers

Un buffer est un fichier chargé en mémoire. Un fichier ouvert dans Vim est alors un buffer (qu'il soit affiché à l'écran… ou non).

Lorsque nous ouvrons un fichier, celui-ci est chargé dans un buffer. Si nous ouvrons un autre fichier, celui-ci sera chargé dans un second buffer. Nous pouvons alors naviguer entre les fichiers ouverts assez facilement.

Voici quelques commandes utiles pour gérer les buffers :

  • :ls → lister les buffers ouverts
  • :b{i} → ouvrir le buffer {i}
  • :bnext ou :bn→ ouvrir le buffer suivant
  • :bprevious ou :bp → ouvrir le buffer précédent
  • :bdelete ou :bd → ferme le buffer courant

Onglets Vim

Ce n'est pas très utilisé mais Vim permet aussi de gérer des onglets afin de travailler sur plusieurs fichiers en même temps. La syntaxe pour ouvrir directement de nombreux fichiers en une seule commande est alors la suivante : vim -p file1 file2 file3.

Voici les principales choses à retenir:

  • :tabe → ouvrer un nouveau fichier dans un nouvel onglet
  • gt → passer à l'onglet suivant
  • gT → passer à l'onglet précédent
  • {i}gt → passer à l'onglet {i}
  • :qa → fermer tous les onglets

Multifenêtrage

Maintenant, on s'attaque à l'affichage de plusieurs buffers en même temps avec le multifenêtrage.

  • :split fichier ou :sp → ajouter une fenetre horizontale en ouvrant 'fichier'
  • :vsplit fichier ou :vsp → ajouter une fenetre verticale en ouvrant 'fichier'
  • ctrl-w fleche-haut → se déplacer vers le haut
  • ctrl-w ctrl-w → se déplacer vers la fenêtre suivante
  • :resize 10 → redimensionner la fenêtre courante à 10 lignes
  • :vertical resize 10 → redimensionner la fenêtre courante à 10 colonnes
  • :sview → ouvrir en lecture seule
  • :hide → fermer la fenêtre courante
  • :only → fermer toutes les fenêtres sauf la fenêtre courante

Les registres

Lorsque nous manipulons un fichier volumineux, nous allons régulièrement faire des d(couper) et des p(coller).

Certaines suppressions avec d n'auront pour objectif que de supprimer un bloc de texte, sans volonté de l'enregistrer dans notre presse-papier. Pourtant Vim va l'enregistrer dans le presse papier et nous allons perdre le contenu qui aurait dû être collé par p (ou P) avant la suppression.

À ce problème, nous avons la solution d'utiliser les registres.

Lorsque vous supprimez un bloc, Vim va automatiquement l'ajouter à un registre qui peut retenir jusqu'à 9 blocs.

D'autres éléments sont également déjà présents dans le registre en readonly :

  • "% correspond au nom du fichier en cours d'édition
  • ": est la dernière commande exécutée
  • ". affiche la dernière chaine de texte ajoutée
  • "/ correspond à la dernière recherche (sed inclus)
  • "* correspond au clipboard clic-molette
  • "+ correspond au clipboard système
  • "# correspond au dernier fichier ouvert (sur la même session)Gestion des Buffers

Sauvegarder un élément dans le registre À présent, vous pouvez également ajouter un élément au registre afin qu'il ne soit pas supprimé. Si les clés 0-9 et %:/*+# sont en lecture seule, il vous reste néanmoins toutes les clés alphabétiques.

Chaque commande concernant le registre commence par " (doubles-quotes). Pour coller la clé 9, la commande est : "9p (p pour coller)

Pour enregistrer une clé dans le registre : "ayy (yy pour copier la ligne)

Évidemment : p et yy ne sont pas les seules manières de coller/copier le contenu d'une clé. Les commandes valables dans les précédents cas d'usages sont toujours valides et utilisables dans ce contexte.

Dernière édition le 2025-02-09 22:57

Propulsé par Wiki|Docs

This page was last edited on 2025-02-09 22:57

Jules
Free licence

Propulsé par Wiki|Docs