--- categories: wip title: Howto Vim ... Un des éditeurs de texte de prédilection pour administrateur système. Vim est une couche de Vi apportant de nombreuses possibilités de personnalisation. Ses début dans les années 90, il est encore très apprécié de par sa rapidité et que son code source soient encore (et restera) libre. Merci à [Bram Moolenaar](https://fr.wikipedia.org/wiki/Bram_Moolenaar) qui est l'initiateur de ce logiciel. ## Recommandations Il est disponible dans tous les dépôts Debian : ~~~{.bash} sudo apt install vim ~~~ Pour éviter de se tromper d'éditeur, nous pouvons le définir par défaut : ~~~{.bash} sudo update-alternatives --config editor ~~~ Nous vous recommandons de suivre en quelque minutes le tutoriel pour apprendre les bases : ~~~{.bash} vimtutor ~~~ Il faut savoir qu'il y a deux vues distinctes que l'on peut apercevoir en bas de l'interface ; le mode "-- VISUEL --" et le mode "-- INSERTION --". Avant de lancer les commandes que nous allons présenter plus bas, il faut d'abord savoir que le mode insertion s'active avec la touche `i` et pour revenir en mode visuel, il suffit d'appuyer sur la touche `Echap`. En cas de besoin pour obtenir de l'aide : ~~~{.bash} :help user-manual ~~~ ## Premiers pas Commençons par connaître une liste de raccourcis "vitales" : ~~~ a = "passer en mode «Insert» à droite du curseur" :q! = "quitter sans sauvegarder" :wq ou :x = "sauvegarder et quitter" dd = "supprimer (et couper) la ligne actuelle" v = "sélection du texte à partir du curseur" V = "sélection du texte par ligne" y ou Y = "copier la ligne actuelle" p = "coller la ligne précédemment sélectionné" u = "Annule la modification" zz = "recentre le texte à se trouve le curseur" XG = "place le curseur à la ligne X" /mot = "Recherche le terme 'mot' vers le bas" /mot\c = "Recherche le terme 'mot' vers le bas et sans prendre en compte la casse" ?mot = "Recherche le terme 'mot' vers le haut" ~~~ ## Commandes avancées La barbe commence à pousser ? C'est que vous êtes sur le bon chemin jeune padawan. Voici une seconde liste d'astuces pour éditer encore plus vite. ~~~ rX = "remplace un caractère par X" i = "passer en mode «Insert» - à gauche du curseur" I = "passer en mode «Insert» - en début de phrase" A = "passer en mode «Insert» - en fin de phrase" x ou . = "effacer le caractère à droite" X = "effacer le caractère à gauche" cw = "change word - change le mot après l'emplacement du curseur" C-r = "redo" e = "place le curseur à la fin d'un mot" R = "Remplace les mots après le curseur" 0 = "début de ligne" ^ = "début de ligne (sauf caractères invisibles)" w = "fin du mot" $ = "fin de ligne" gg = "Début du fichier" G = "fin du fichier" % = "Trouve le caractère fermant de '( [ ou {' :s/ancien/nouveau/g = "remplace le mot ancien par le mot nouveau" :%s/aa/bb/g = "remplace toutes les récurrences dans un fichier" ce = "remplace le mot positionné à côté du curseur." c$ = "edit tout le reste de ligne." c[0|^|w|$|G] = "changer (supprime et passe en mode insertion)" d = "supprimer" ~ = "inverser la casse d'un caractère" :set paste` / `:set nopaste = "passer en mode copier/coller (et revenir)" :e = "Après avoir sauvegardé son travail, on édite directement un autre fichier" :set hlsearch = "active l'option de surbrillance lors de la recherche d'un mot" ~~~ ## Options ~~~ :set list = "Afficher les caractères invisibles" :syntax on = "coloration syntaxique " :color desert = "change la couleur pour *desert*" ~~~ Pour désactiver les options, il faudra ajouter le préfixe "no". Voici un exemple : ~~~ :set nolist = "Afficher les caractères invisibles" ~~~ ## Usages spécifiques * Commenter du code selon la procédure suivante : ~~~{.bash} C-v = "Mode «Visual» activé" = "Choisir la zone concernée" I = "Insérer en début de ligne - active le mode «Insert»" = "Caractère du commentaire en question - selon langage" Echap = "Quitter le mode «Insert»" ~~~ * Pour dé-commenter, suivre la liste des commandes suivante : ~~~{.bash} C-v = "Mode «Visual» activé" = "Choisir la zone concernée" x = "Supprimer le caractère" ~~~ * Taper des caractères UTF8 ~~~{.bash} CTRL-V u XXXX = "où `XXXX` est le code du caractère UTF8" ~~~ * Taper des caractères ASCII ~~~{.bash} Ctrl+v NNN = "où `NNN` est le code du caractère UTF8" ~~~ * Rechercher et remplacer dans portion d'un fichier (méthode sed) Admettons que nous avons éditons un fichier d'une dizaine de ligne où les mots anciens doivent être remplacé par nouveaux. Ce changement doit uniquement s'opéré entre la ligne 2 et 6 : ~~~ 2,6s/anciens/nouveaux/g ~~~ * Scripting Exécuter automatiquement des commandes : ~~~ $ vim ":retab" "+wq" ~~~ Écrire des commandes dans un script puis les rejouer : ~~~ $ vim -s script.txt FICHIER $ vim -w script.txt FICHIER2 ~~~ * Vimdiff ~~~{.bash} C-w C-w : "Changer de colonne du fichier comparé" ~~~ ## Webografie * [Documentation sur le site officiel](http://www.vim.org/docs.php) * [Vim casts](