Archives du mot-clé Vim

Vim tip : un peu de renu­mé­ro­ta­tion

Mettons que vous récu­pé­riez une liste numé­ro­tée, que vous suppri­miez les doublons, que chan­giez l’ordre et que du coup votre numé­ro­ta­tion ne soit plus bonne. Un peu dans le genre là (oui, ça ressemble à un liste de courses, c’est le premier truc qui me soit venu à l’es­prit) :

4 : lait
1 : jambon
2 : pain
6 : cookies

Mais comment faire pour renu­mé­ro­ter sans me prendre la tête ? (là, ça va, mais quand vous avez une liste d’une bonne centaine d’items, c’est un peu lourd de faire ça à la main)

Je vous propose deux solu­tions, selon votre goût :

  1. Faire une macro. Je l’ai souvent fait, ça marche très bien mais le problème, c’est que ça peut être long.
    :let i = 1
    :map <F4> :s/^\d\+/\=i/<cr>:let i +=1<cr>j

    Un coup de F4 rempla­cera les chiffres de début de ligne par la valeur de la variable i que nous avons initia­li­sée juste au dessus, puis incré­men­tera i et enfin vous posi­tion­nera à la ligne du dessus. Il ne vous reste plus qu’à rester le doigt sur F4 jusqu’à ce que vous ayez tout traité.

  2. Là c’est un poil plus compliqué, mais à peine, et surtout l’exé­cu­tion sera beau­coup plus rapide.
    :let g:i = 1
    :function One()
    : let a = g:i
    : let g:i += 1
    : return a
    :endfunction
    :%s/^\d\+/\=One()/

    On initia­lise d’abord la variable globale i puis on crée une fonc­tion qui l’in­cré­mente mais qui renvoie sa valeur d’avant l’in­crée­men­ta­tion. Enfin on remplace tous les nombres de début de ligne par la valeur que renvoie la fonc­tion One, cette valeur s’in­cré­men­tant à chaque substi­tu­tion.

  3. Je crois qu’il existe un plugin Vim qui permet de faire tout seul ce genre de chose mais je n’ai pas le nom sous la main et en plus je n’ai jamais réussi à m’en servir correc­te­ment…
Me soutenir sur Tipeee Me soutenir sur Liberapay

Encore un petit tip Vim

Le commen­taire de Billux à ma note précé­dente (voir ici) m’a rappelé qu’a­vec Julien, on avait trouvé deux tips bien utiles :

  • En mode édition, si vous êtes en train d’écrire un chemin, Vim vous propo­sera l’au­to­com­plé­tion de ce chemin si vous faites Ctrl+x, Ctrl+f
  • En mode commande, vous pouvez dire à Vim d’ou­vrir le fichier dont le chemin est sous le curseur avec
    • gf pour l’ou­vrir dans un nouveau buffer
    • Ctrl+w, gf pour l’ou­vrir dans un nouvel onglet

Tant que j’y suis, parlons un peu des buffers (il s’agit là des buffers des fichiers et non des presses-papier).
Habi­tuel­le­ment je préfère utili­ser les onglets mais dans certaines circons­tances, les onglets ne peuvent être utili­sés. Vim à travers un screen par exemple.
Le problème avec ces buffers, c’est qu’ils forment une pile et qu’il est parfois diffi­cile de se rappe­ler quel fichier est ouvert, s’il est loin dans la pile…

Pour utili­ser les buffers de façon plus confor­table, j’uti­lise le plugin mini­bu­fex­plo­rer. Il permet d’avoir la liste numé­ro­tée des buffers en haut de l’édi­teur, ce qui est quand même bien plus pratique.

Et dès lors, les commandes suivantes sont bien plus agréables à utili­ser puisqu’on sait où on va :

  • :bn pour le buffer suivant
  • :bp pour le buffer précé­dent
  • :bd pour suppri­mer le buffer
  • :bufdo :%s/toto/titi pour rempla­cer toto par titi dans tous les buffers (il existe aussi tabdo pour la même chose avec les onglets)
Me soutenir sur Tipeee Me soutenir sur Liberapay