Le contexte
J'utilise vifm
comme gestionnaire de fichiers (c'est hors sujet ici, je sais, mais continuez à lire) qui me permet de modifier les noms de fichiers dans un vim
tampon.
Un problème qui m'a ennuyé est les fichiers numérotés où je veux garder les zéros en tête (par exemple movie0001.webm
). Je n'arrive pas à faire vim pour les formater correctement.
La question
J'ai un vim
tampon contenant:
mov70.webm
mov71.webm
mov72.webm
mov73.webm
mov74.webm
mov75.webm
mov76.webm
mov77.webm
mov78.webm
mov79.webm
Et mon curseur commence à m
la première ligne. Je fais ensuite VG
tout marquer et 69<C-x>
le transformer en:
mov1.webm
mov2.webm
mov3.webm
mov4.webm
mov5.webm
mov6.webm
mov7.webm
mov8.webm
mov9.webm
mov10.webm
Mais j'aimerais vraiment y parvenir à la place:
mov01.webm
mov02.webm
mov03.webm
mov04.webm
mov05.webm
mov06.webm
mov07.webm
mov08.webm
mov09.webm
mov10.webm
Ce que j'ai essayé
Le problème avec les nombres avec des zéros en tête est que vim
les traitera comme octal
, donc j'ai changé nrformats
pour une chaîne vide:
:set nrformats=
Pourtant, cela n'a pas aidé. J'ai cherché autour :h nrformats
sans trouver quoi que ce soit d'utile.
la source
:subsitute
+printf
Réponses:
Cela peut se faire en deux étapes relativement simples:
ctrl-x
'[,']s/\d\@<!\d\>/0\0/
Vous pouvez transformer cela en une commande / fonction si vous pensez que vous devrez le faire souvent.
Une autre façon est de faire comme muru l'a mentionné et d'utiliser
substitute
+printf
, qui peut conserver la longueur de chaîne des chiffres remplacés:Cela pourrait également être transformé en une commande réutilisable:
Avec lequel vous pouvez exécuter
:'<,'>Decr 69
pour décrémenter les lignes visuelles de 69.la source
viscript
maislen(submatch(0))
c'est une excellente astuce. Ajouté à monvimrc
, et également ajouté uneIncr
commande.Bien que j'irais certainement avec
:s
+printf
pour des remplacements complexes, je peux obtenir l'effet que vous désirez si je pars et j'en00
aiset nrformats-=octal
. C'est:Sélectionnez les nombres dans un bloc visuel:
Notez que j'ai ajouté
mov76.webm
- vous n'avez pas réellement dix fichiers dans votre liste d'exemples.Remplacez par des zéros et sélectionnez à nouveau la même région:
r0gv
Utilisation
g<c-a>
:Sans
set nrformats-=octal
, vous verrez010
,011
etc.la source
0
yeux ressemblent à des yeux. Terrifiant.mov76.webm
, j'ai utilisé un mauvais répertoire. J'ai édité la question. Oui, pour la police andale .