Es ist nicht einfach, einen schönen Titel für mein Problem zu finden.
Mir ist bewusst, vor einem Textblock einzufügen:
Ctrl- v Wählen Sie Zeilentyp I Text ESC
Jetzt möchte ich dies tun, aber auch ein Teil in meiner Blockauswahl ersetzen. Derzeit mache ich zwei Operationen
Ctrl- v Wählen Sie Block x zurück zum Start
Gefolgt von der oben erwähnten Sequenz.
Gibt es eine Möglichkeit, diese beiden Operationen zu kombinieren, indem Sie den Block nur einmal auswählen ( Ctrl- v)?
Hier ist ein kleines Beispiel:
Ich möchte den folgenden Block transformieren
1 text
2 text
3 text
4 text
5 text
in
new text
new text
new text
new text
new text
nur eine "Operation" ausführen.
visual-mode
replace
Patrick B.
quelle
quelle
Antworten:
Wenn Sie cnach Auswahl Ihres Blocks statt xtippen, wird der Text im Auswahlblock entfernt und der Einfügemodus aktiviert. Sobald Sie etwas eingegeben und den Einfügemodus verlassen haben, sollten Sie in jeder Zeile die gleiche Änderung vornehmen.
Versuchen
Ctrl- v- Block auswählen - c- was auch immer einfügen -Esc
quelle
Stellen Sie sich eine Reihe von drei verschiedenen Blockbuchstaben wie oben vor.
^V
Wenn ich das Obige auswähle, kann ichA
aufgrund ungleicher Linien nicht alle im letzten Buchstaben der Zeile ändern . Die vorherigen Blockbuchstaben funktionierten gut mit:s/\%V1/T/g
"Vorheriger Blockbuchstabe war ein T aus '1'. Wechseln Sie/T/
zu was auch immer.Bei Auswahl des letzten oben gezeigten Blockbuchstabens wurden jedoch nur alle Einsen in A bis zum Punkt A * geändert, und der Rest blieb erhalten.
* Die kürzeste Linie.
Um alle Linien gleich lang zu machen, habe ich sie mit Leerzeichen aufgefüllt. (Ich bin neu in vim, daher bin ich sicher, dass ein besseres Skript geschrieben werden könnte.)
Hinweis: Die Spitze des A begann in Zeile 2.
Danach
:s/\%V1/T/g
arbeitete wie am letzten Blockbuchstaben in der Zeile angegeben.PS Ich habe gelesen, dass die
execute
obige Zeile ohne die Punkte funktionieren sollte, aber es hat bei mir nicht funktioniert.quelle