Ich weiß, dass ich vom Cursor bis einschließlich des ersten Vorkommens eines Zeichens x mit d/x<CR>
oder mit v/x<CR>d
löschen kann, wenn ich die Auswahl zuerst sehen und dann löschen möchte. Wie kann ich von der aktuellen Cursorposition bis zum n- ten Auftreten von x löschen ?
ZB wenn der Cursor nach dem ersten Leerzeichen in steht
yada yada yada
yada yada yada x
yada yada yada x
yada yada yada x
xx
und ich gebe einen Befehl ein, um bis zum dritten x das Ergebnis zu entfernen :
yada
xx
search
cut-copy-paste
Erwin Rooijakkers
quelle
quelle
f
und Freunden (F
,t
,T
,;
): zB2fx
erhalten Sie auf die zweitex
oder2;
die letzte Wiederholungf
zweimal.Sie können dies tun, indem Sie Folgendes eingeben
wo:
quelle
wird in vim häufig verwendet, um das Makro "n" mal zu wiederholen.
Um also bis zum ersten Vorkommen von x zu löschen, würden Sie verwenden
1dfx
. Um bis zum 3. Vorkommen von x zu löschen, würden Sie auf ähnliche Weise verwenden3dfx
.quelle
@x
denenx
Sie aufrufen, wo sich Ihr Register befindet. Worauf Sie sich beziehen, ist ein Befehl im normalen Modus.<n>macro
in vim keine Standardnotation für die Makros ist, und da Ihre Antwort einen normalen Modusbefehl verwendet, ist sie ziemlich gleich wie die von kapil.Gegeben:
wobei die
$
Enden der Leitungen (Angabe:set list
Modus), wenn sich der Cursor am Anfang des zweiten istyada
in der ersten Zeile, müssen wir zuerst auf den vorhergehenden Raum sichern verwendet h, ist es in der Deletion enthalten. Dann eben 4d/xEnter. Mit anderen Worten, nur eine Zählung vor d/x. Das Ergebnis ist genau:quelle