Die anderen vorhandenen Antworten hängen alle von der Definition und Erkennung eines Blocks durch vim ab. Meine Strategie für diese Art von Löschungen besteht darin, den c
Befehl in Kombination mit der f
Bewegung und dem tatsächlichen Zeichen zu verwenden, bei dem angehalten werden soll. Dadurch wird das Stoppzeichen tatsächlich gelöscht, aber da es auch die letzte Taste war, die Sie zweimal gedrückt haben, hat dies einen Wert von nahezu Null. Dadurch wird es seit dem c
Wechsel in den Einfügemodus erneut eingefügt.
Mit Beispielen zu erklären, z
func1(x|, func2(), y);
Der Befehl c2f))
wird geben
func1(x)|;
Dies mag auf den ersten Blick weniger elegant erscheinen als einige der anderen Antworten. Beachten Sie jedoch, dass diese Strategie universell ist und nicht von einer Blockdefinition abhängt.
Zum Beispiel mit
<div| class="some-class">text</div>
Der Befehl cf>>
wird geben
<div>|text</div>
Oder beim Bearbeiten von CSV-Dateien wie
2016-11-29,question,vi|.stackexchange.com,10435
Der Befehl cf,,
wird geben
2016-11-29,question,vi,|10435
Oft benutze ich dies, um den Rest eines Strings von zu löschen
printf("Hello world| - a boring example\n");
zu
printf("Hello world\|n");
mit cf\\
oder von
print("Hello world| - a boring example");
zu
print("Hello world"|);
mit cf""
.
Dies ändert die aktuelle Position an eine etwas andere Stelle als gewünscht und wechselt auch in den Einfügemodus. Aber ich wollte meinen Lösungsweg teilen, um den Rest von allem zu löschen.
C);
in diesem speziellen Fall tun .