Kontext
Ich verwende vifm
als Dateimanager (das ist hier kein Thema, ich weiß, aber lese weiter), mit dem ich Dateinamen in einem vim
Puffer bearbeiten kann .
Ein Problem, über das ich mich geärgert habe, sind nummerierte Dateien, in denen ich führende Nullen behalten möchte (z movie0001.webm
. B. ). Ich kann vim nicht dazu bringen, sie richtig zu formatieren.
Die Frage
Ich habe einen vim
Puffer mit:
mov70.webm
mov71.webm
mov72.webm
mov73.webm
mov74.webm
mov75.webm
mov76.webm
mov77.webm
mov78.webm
mov79.webm
Und mein Cursor beginnt m
in der ersten Zeile. Ich mache dann alles VG
zu markieren und es 69<C-x>
zu verwandeln in:
mov1.webm
mov2.webm
mov3.webm
mov4.webm
mov5.webm
mov6.webm
mov7.webm
mov8.webm
mov9.webm
mov10.webm
Aber ich würde das wirklich gerne erreichen:
mov01.webm
mov02.webm
mov03.webm
mov04.webm
mov05.webm
mov06.webm
mov07.webm
mov08.webm
mov09.webm
mov10.webm
Was ich versucht habe
Das Problem mit Zahlen mit führenden Nullen ist, dass sie vim
so behandelt werden octal
, dass ich nrformats
zu einer leeren Zeichenfolge gewechselt habe:
:set nrformats=
Das hat aber nicht geholfen. Ich habe mich umgesehen, :h nrformats
ohne etwas Nützliches zu finden.
:subsitute
+printf
Antworten:
Dies kann in zwei relativ einfachen Schritten erfolgen:
ctrl-x
'[,']s/\d\@<!\d\>/0\0/
Sie können daraus einen Befehl / eine Funktion machen, wenn Sie der Meinung sind, dass Sie dies häufig tun müssen.
Eine andere Möglichkeit besteht darin, wie in Muru erwähnt zu tun und
substitute
+ zu verwendenprintf
, wodurch die Zeichenfolgenlänge der ersetzten Ziffern erhalten bleibt:Dies könnte auch in einen wiederverwendbaren Befehl umgewandelt werden:
Womit Sie laufen können,
:'<,'>Decr 69
um die visuellen Linien um 69 zu verringern.quelle
viscript
aber eslen(submatch(0))
ist ein großartiger Trick. Fügte es zu meinemvimrc
hinzu und fügte auch einenIncr
Befehl hinzu .Während ich definitiv mit
:s
+printf
für komplexe Ersetzungen gehen würde, kann ich den gewünschten Effekt erzielen, wenn ich anfange00
und habeset nrformats-=octal
. Das ist:Wählen Sie die Zahlen in einem visuellen Block aus:
Beachten Sie, dass ich hinzugefügt habe
mov76.webm
- Sie haben tatsächlich keine zehn Dateien in Ihrer Beispielliste.Durch Nullen ersetzen und denselben Bereich erneut auswählen:
r0gv
Verwendung
g<c-a>
:Ohne
set nrformats-=octal
, werden Sie sehen010
,011
etc.quelle
0
sehen aus wie Augen. Gruselig.mov76.webm
, ich habe ein schlechtes Verzeichnis verwendet. Ich habe die Frage bearbeitet. Ja, für die andale Schrift.