101011001001101

Accueil > Informatique [computer science] > Linux > Vim (Vi IMproved)

Vim (Vi IMproved)

Editeur de texte en ligne de commandes

samedi 24 mai 2014, par Vincent MAGNIN

Site officiel : http://www.vim.org
Documentation en ligne : http://vimdoc.sourceforge.net/
Un ebook sur Vim : http://vimebook.com/

Vim démarre en mode commande. La touche Echap permet de revenir en mode commande.

  • :x ou :wq ou ZZ pour sauvegarder et quitter,
  • :q pour quitter,
  • :w pour sauvegarder (avec éventuellement un nom de fichier derrière). :w %bis permet de sauvegarder avec le même nom suivi de "bis" (le signe % représente le nom actuel du fichier).
  • :e! pour tout annuler et revenir àla dernière version enregistrée, (le point d’exclamation permet de forcer la commande pour ne pas avoir d’avertissement),
  • :e nomfichier pour charger et éditer un fichier,
  • :q! pour tout annuler et quitter.
  • :r nomfichier pour insérer le contenu d’un autre fichier,
  • :!commande pour lancer une commande externe (par exemple :!ls),
  • TAB pour l’autocomplétion,
  • :tabe nomfichier pour éditer un fichier dans un nouvel onglet,
  • :tabn ou :tabp pour passer àl’onglet suivant ou précédent (on peut également sélectionner l’onglet àla souris),
  • :vert diffsplit fichier2 pour comparer le fichier courant avec un deuxième fichier,
  • vimdiff fichier1 fichier2 pour lancer vim et comparer deux fichiers,
  • vim -p *.ext pour ouvrir plusieurs fichiers chacun dans un onglet,
  • vim + nomfichier pour ouvrir un fichier et se placer sur sa dernière ligne,
  • vim +256 nomfichier pour ouvrir un fichier et se placer sur la 256e ligne,

Options

On peut personnaliser la configuration de vim avec le fichier ~/.vimrc (ne pas mettre le : début de ligne). Pour prendre en compte les modifications de ce fichier sans sortir de vim, utilisez la commande :source ~/.vimrc

  • :set backup permet d’avoir une copie de sauvegarde (dont le nom se termine par un ),
  • :syntax on pour activer la coloration syntaxique,
  • :set number pour afficher les numéros de ligne,
  • :set showcmd pour voir les commandes tapées,
  • :set ruler pour afficher les coordonnées du curseur en bas àdroite,
  • :set mouse=a pour pouvoir utiliser la souris pour se déplacer ou sélectionner,
  • :set option? pour connaître l’état d’une option,
  • :set nooption pour désactiver une option,

Déplacement

  • h, j, k, l pour aller àgauche, en bas, en haut, àdroite (on peut aussi utiliser les flèches),
  • 0 et $ pour se déplacer en début et fin de ligne,
  • w pour se déplacer au début du mot suivant,
  • b pour se déplacer au début du mot courant ou précédent,
  • e pour se déplacer àla fin du mot courant,
  • w, b et e peuvent être précédé d’un nombre : par exemple 3w pour avancer de trois mots,
  • ( pour se déplacer au début de la phrase courante ou précédente (une phrase se termine par un point, point d’exclamation, d’interrogation, ou points de suspension, suivi d’une espace),
  • ) pour se déplacer au début de la phrase suivante,
  • % pour se déplacer àla parenthèse, accolade ou crochet fermant,
  • gg pour revenir au début du document,
  • G pour aller àla fin du document,
  • CTRL u et CTRL d pour se déplacer d’un demi-écran vers le haut ou le bas,
  • zz pour placer la ligne courante au centre de la fenêtre,
  • 20G pour aller àla ligne 20,
  • v pour passer en mode visuel : on peut alors utiliser les touches de déplacement pour faire une sélection.

Mode Insertion

  • i pour passer en mode insertion. La touche Echap permet de revenir en mode commande.
  • R pour passer en mode remplacement (r permet de remplacer une seule lettre sans passer en mode insertion),
  • on pourra aussi utiliser la touche Inser pour passer en mode insertion ou remplacement,
  • o pour insérer une ligne et passer en mode insertion,
  • 20i*[Echap] pour insérer 20 étoiles,

Effacer, couper, copier, coller

  • x ou Suppr pour effacer un caractère,
  • d pour supprimer la sélection,
  • dw pour effacer la fin d’un mot (et l’espace qui suit),
  • dE pour effacer la fin d’un mot, y compris la ponctuation qui suivrait,
  • db pour supprimer le début du mot (caractères avant le curseur),
  • d0 pour supprimer tous les caractères de la ligne situés avant le curseur,
  • d$ pour supprimer tous les caractères de la ligne situés après le curseur,
  • dd pour supprimer (couper) une ligne (5dd pour en couper cinq),
  • p permettra de coller la ligne supprimée après celle ou est situé le curseur, avec P ce sera avant, 3p collera trois fois la ligne,
  • y, yw, yE, yb, y0, y$, yy fonctionnent de la même façon mais pour copier,
  • u pour annuler la dernière modification, 3u pour les trois dernières modifications,
  • :redo ou . permettent de répéter la dernière commande, 3. pour répéter trois fois,
  • :earlier 2m pour récupérer le fichier tel qu’il était il y a deux minutes (s pour secondes, h pour heures). :later pour se déplacer dans l’autre sens.
  • "add pour couper une ligne dans le buffer a, et "ap pour coller le contenu du buffer. On peut donc utiliser 26 buffers. "Add permet d’ajouter une ligne dans le buffer a au lieu de remplacer son contenu. :registers permet de visualiser le contenu des registres utilisés. qaq permet d’effacer le contenu du registre a.

Rechercher, remplacer

  • /mot[Entrée] pour chercher un mot vers l’avant, ?mot[Entrée] vers le haut. On peut utiliser des expressions régulières, par exemple : /[Vv]im
  • n pour le suivant, N pour le précédent,
  • * et # pour chercher la prochaine occurrence du mot sous le curseur, respectivement en avant et en arrière,
  • :% /mot/remplaçant/gc pour remplacer toutes (option g) les occurrences du mot dans la ligne avec confirmation (option c). % définit la portée de la commande, ici tout le document (équivaut à1,$).
  • f suivi d’un caractère pour trouver sa prochaine occurrence dans la ligne courante, F pour la précédente,
  • d/mot pour tout effacer jusqu’au mot en question,
  • :vimgrep /motif/ *.ext pour rechercher un motif dans tous les fichiers portant cette extension. :clist permet alors d’avoir la liste des occurrences. :cc 5 permettra d’aller àla cinquième occurrence. Pour une recherche récursive écrire **/*.ext
  • :abbrev Kub Kubuntu pour définir une abréviation qui sera automatiquement remplacée par le deuxième argument. iabbrev et cabbrev permettent de définir des abréviations uniquement en mode insertion ou commande.

Modifier la sélection

  • u ou U pour mettre en minuscules ou majuscules,

Découpage d’écran

  • :sp pour découper l’écran en deux parties (ou plus) l’une en dessous de l’autre. Peut-être suivi d’un nom de fichier àouvrir dans la nouvelle fenêtre.
  • :vsp pour découper verticalement l’écran en deux parties (ou plus) l’une àcôté de l’autre,
  • CTRL w CTRL w pour naviguer d’une vue (viewport) àune autre,
  • CTRL w CTRL v pour diviser en deux la fenêtre actuelle (séparation verticale),
  • CTRL w puis j, h, k ou l pour se déplacer vers la vue située dans cette direction,
  • CTRL w puis r ou R pour inverser deux vues ou revenir àla position initiale,

Bibliographie

  • D. Bodor, "Vim, le Vi amélioré : votre seul éditeur de texte, tout simplement", GNU Linux/Magazine France, HS34, janv./fév. 2008, p. 68-74.
  • T. Colombo, "Préparer son système : configurer l’éditeur Vim", Linux Pratique HS22, p. 12-17, oct./nov. 2011.
  • T. Colombo, "Je dois modifier un fichier de configuration !", Linux Pratique HS18, p. 59-63, juin/juil. 2010.
  • "Editer un fichier avec Vi (guide rapide)", Linux Pratique HS27, p. 76-77.