Commenter plusieurs lignes avec vim

Vim
Commenter plusieurs lignes avec vim
E-mail Regex

Salut à tous, aujourd’hui je vous donne une astuce pour commenter plusieurs ligne dans vim. En cherchant aujourd’hui, je me suis rendu compte qu’on tombe sur des trucs comme ça, utilisant le mode visuel avec 5 étapes, plusieurs changement de mode, et un retour visuel de l’interface pas du tout intuitif. Alors OK vim n’est pas un modèle d’ergonomie et même si il est un peu ésotérique : ça reste ultra puissant. Je me suis dit qu’on devait pouvoir faire mieux pour commenter plusieurs lignes avec vim.

Et effectivement 2-3 recherches plus loin, on trouve comment commenter les 23 lignes suivantes (par rapport au curseur), tapez (en mode normal) :

:.,+23 s/^/#/g

Pour supprimer les commentaires de ces même 23 lignes :

:.,+23 s/^#//g

Comment ca marche ? :range s[ubstitute]/pattern/string/cgiI

Comme j’aime bien expliquer ce qui se passe plutôt que de vous filer les commandes que vous ne comprenez pas. Voilà ce que vous êtes en train de lui dire :

range

:.,+23

Signifie : sélectionne les lignes depuis la ligne actuelle (« . ») jusqu’à 23 lignes après (« +23 »).  Mais on peut aussi lui demander de la ligne 42 à 66 :

:42,66

Ou encore les 20 dernières lignes jusqu’à celle courante :

:-23,.

subsitute

Une fois qu’on lui a indiqué où appliquer le traitement on lui quoi  faire :

s/^/#/g

s pour « subsitute » s’utilise avec la syntaxe suivante : s/[pattern]/[string]/[options]

  • ^ : dans pattern étant la regex pour « début de ligne »
  • # : étant le caractère qui remplace.
  • g : l’option pour remplacer toutes les occurrences dans la ligne (et pas seulement là première)
    Cette option n’a aucun sens pour un ajout en début de ligne car il n’y a forcement qu’un seul début de ligne. On pourrait donc l’enlever, mais elle me permet de vous pointer les options possibles ici.

Donc pour faire simple, on lui demande : « Remplace les débuts de ligne par # ». Presque, car dans ce cas on se retrouverait avec tout sur une seul ligne. En fait, « ^ » est une ancre spéciale pour vim et pas un caractère remplaçable. Du coup ca devient : « Ajoute # en début de ligne ».

Logiquement la commande de suppression des commentaires devient : « Remplace les débuts de lignes qui commence par # par rien. »

Commenter plusieurs lignes avec vim

Contrairement à ce que j’ai trouvé sur d’autres tuto : j’espère que vous aurez compris ce que vous faîtes et que cette version en 14 caractères pour commenter plusieurs lignes à la fois vous servira ! Elle me semble plus simple à retenir que celle du mode visuel. Et si quelqu’un trouve un raccourci aussi rapide que le « Select+Ctrl-K » de notepad++, je prend !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.