Astuce vim

02/10/2009

Toujours accroc à l’outil de travail le plus puissant selon moi, j’ai nommé: le terminal, vim est donc comme vous le savez mon EDI (ou IDE pour les anglicistes). Si vous passez à vim pour développer, il faudra avoir certains réflexes et en perdre d’autres. Voici quelques questions qu’on m’a posé et auxquelles j’ai des réponses.

En premier lieu, le chercher/remplacer. Chercher reviens à faire: -Echap si vous êtes en édition -presser / ou ? pour respectivement chercher après ou avant le curseur -taper une expression, un mot… -presser Entrer

Pour chercher la suivante occurrence, pressez “n”, la précédente “N” (pensez à **N**ext).

Remplacer est plus “tordu” mais relativement simple. Il faut utiliser la commande “s” comme “**S**ubstitute. Par défaut, la commande “s” agit sur la prochaine occurrence trouvée: -pressez Echap si vous êtes en train d’éditer -presser la touche “:” pour faire apparaître la ligne de commande (qui apparaîtra en bas de l’écran à gauche) -presser s/chaîne à trouver/chaîne de remplacement/ -presser Entrer

Évidemment, vous pouvez utiliser des expressions régulière. Pour que la commande agisse sur le fichier complet, utilisez “%”:

:%s/expression de départ/expression de remplacement/

Maintenant, quelques trucs que j’utilise et qui sont bien pratique.

Commenter un bloc de ligne est une chose fréquente en développement pour activer ou désactiver plusieurs lignes de code. Voici comment je m’y prend avec PHP qui utilise “//” pour le commentaire “one-line”. -Je me place en début de la première ligne de la section à commenter -Je passe en mode “Visual geometry” en pressant Ctrl+v -avec les flèches, je sélectionne la première colonne -Je presse Maj+I pour passer en insertion visuelle, puis “//” puis Echap.

Une demi seconde plus tard voilà mes “//” sur toutes les lignes que j’ai sélectionné. Pour réactiver les ligne: -Echap, Ctrl+v -sélection des deux colonne contenant “//” -presser “x” (supprimer)

Voilà.

Il existe une autre méthode: -Echap, Maj+V -Sélection des lignes -Presser “:“, apparaît alors en bas de page la ligne “:’<,’>“ -Ajouter s,\^,//, -Valider avec Entrée

Vous remarquez que j’utilise un autre caractère que “/” après le “s” pour éviter d’avoir à échapper les slash à ajouter…

En fait, la commande “s” fonctionne comme ceci: -s -caractère de séparation -chaine à trouver -caractère de séparation -chaine de remplacement -caractère de séparation -modification (g, i…)

Par convention on utilise “/” comme caractère de séparation, mais vous pouvez utiliser n’importe quel caractère qui vous arrange !

Notez: après l’ajout de commentaire il se peut que la colonne 1 soit en surbrillance, faite Echap puis :nohl pour la faire disparaître.

Placer des bookmarks ou “marqueurs” est assez sympa, cela permet de retrouver des lignes rapidement ou de faire des opérations entre deux marques. Pour bookmarker une ligne il suffit de se placer là où vous souhaitez l’ajouter et de presser: Echap puis “mX” où “X” est un caractère de votre choix (a,b,… ou 1,2,…). L’idée étant de “nommer” la marque.

Pour aller à cette ligne, tapez: Echap, puis ‘X en replaçant “X” par le nom de la marque. Pour retrouver les marks, pressez Echap, puis “:marks”, une liste apparaîtra avec vos marks et celle par défaut.

Alors justement, si nous voulons remplacer des choses entre deux lignes ou deux marques, il suffit d’utiliser un “rang de bornes” qui peut fonctionner dans toutes les commandes vim. En fait, vim fonctionne de cette manière en commande:

:[range] commande

Donc par exemple

:2,6 s/foo/bar/
:'a, 'b s/foo/bar/

La première ligne remplace “foo” par “bar” de la ligne 2 à la ligne 6. La seconde ligne fait pareil, mais de la marque “a” à la marque “b”. C’est finalement pas sorcier !

Correction orthographique

Je ne tape jamais mes articles de blog directement dans le navigateur, mais je passe par vim pour garder le fichier sur mon poste. J’utilise la correction automatique pour enlever un maximum de fautes de grappe (oui j’en laisse plein, j’avoue ne pas le faire tout le temps :))

En fait, durant mon édition de texte, je fais: -“Echap: :w” pour sauver -:!aspell -c “%”

Cela lance le correcteur orthographique “aspell”, il suffit de suivre les indications. Quand cela est terminé, vim me propose de rechercher le fichier pour avoir mes modification en pressant “C”.

C’est encore une fois un truc tout bête, j’utilise “!” pour exécuter une commande de terminal. Vous pouvez par exemple utiliser “sort” pour classer le contenu du document en faisant:

:!sort "%" > "%"

Allez je vous laisse tranquille pour le moment :)

Ça peut vous intéresser aussi


Atom.io, l'IDE qui me donne presque envie de me passer de vim

Atom.io est un IDE multiplateforme, libre, pratique et modulaire....


Développer avec Angular 2, Vim et Docker

Angular 2 commence à faire des émules. C’est un ...


Vim for Golang

Developping with Go is easy, a simple text editor and ...


vim est un IDE PHP

Après pas mal de temps passé sur Eclipse, la lourdeur ...

Merci de m'aider à financer mes services

Si vous avez apprécié cet article, je vous serai reconnaissant de m'aider à me payer une petite bière :)

Si vous voulez en savoir plus sur l'utilisation de flattr sur mon blog, lisez cette page: Ayez pitié de moi

Commentaires

Ajouter un commentaire

Ajouter un commentaire

(*) Votre e-mail ne sera ni revendu, ni rendu public, ni utilisé pour vous proposer des mails commerciaux. Il n'est utilisé que pour vous contacter en cas de souci avec le contenu du commentaire, ou pour vous prévenir d'un nouveau commentaire si vous avez coché la case prévue à cet effet.