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

Laisser un commentaire

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