Wie kann ich eine Zeile in VIM ab der Cursorposition schnell löschen?

267

Ich möchte in der Lage sein, den Rest der Zeile zu löschen, die ich an der Position des Cursors in VIM beginne. Gibt es einen einfachen Befehl, um dies zu tun?

Zur Veranschaulichung steht dies vor dem Befehl.

The quick brown dog jumps over the lazy fox.
     ^
     |----- Cursor is here.

Dies ist nach dem Befehl

The q
     ^
     |----- Cursor is here.
Anthony
quelle

Antworten:

430

(Bearbeitet, um die guten Ergänzungen des Kommentators aufzunehmen :)

Doder das Äquivalent d$löscht den Rest der Zeile und lässt Sie im Befehlsmodus. Coder c$löscht den Rest der Zeile und versetzt Sie in den Einfügemodus. An die Zeile wird neuer Text angehängt.

Dies ist Teil von vitutorund vimtutor, ausgezeichnete "liest" für Vim-Anfänger.

Thiton
quelle
1
Blast, ich dachte, es wäre etwas Leichtes, ich dachte an eine Kombination von dgefolgt von etwas. Ich dachte, es wäre schneller, die Frage hier zu posten und anderen Menschen zu helfen, die standardmäßig online suchen, bevor sie das Handbuch lesen.
Anthony
2
Oder Cder einzige "echte" Weg, um den Cursor an die angegebene Position zu bringen, obwohl Sie dadurch in den Einfügemodus versetzt werden.
Walter
1
@Anthony: Es gibt auch ein "d gefolgt von etwas" -äquivalenten Befehl für D, wobei "etwas" die $Bewegung ist : d$.
ib.
2
Und wenn Sie im Einfügemodus landen möchten, verwenden Sie C (oder c$)
Benoit
7
Mir ist klar, dass diese Lösung bereits beantwortet wurde, aber ich habe nach einer Möglichkeit gesucht, eine ganze Zeile mit VIM zu löschen, und dies gefunden. Die Option, nach der ich gesucht habe, war ddaus dem Befehlsmodus. Ich hoffe, das hilft allen anderen, die darüber stolpern.
Frito
41

Verwenden Sie D. Weitere Informationen finden Sie in den Dokumenten .

lucapette
quelle
21

Das könnte Sie auch interessieren C, es löscht auch das Zeilenende wie D, aber zusätzlich versetzt es Sie an der Cursorposition in den Einfügemodus.

Xavier T.
quelle
9

Im Befehlsmodus ausführen d$.

Robert Munteanu
quelle
8
Dist eine schnellere Lösung dafür.
Sedrik
5

Dies ist eine sehr alte Frage, aber da VIM immer noch relevant ist, sollte etwas geklärt werden.

Jede Antwort und jeder Kommentar hier ab Oktober 2018 hat sich auf eine sogenannte "Kürzungs" -Aktion bezogen. Die Verwendung einer dieser Aktionen ersetzt daher alles, was sich derzeit im unbenannten Register von VIM befindet . Dieses Register wird in der Regel wie eine Standard-Zwischenablage zum Kopieren / Einfügen behandelt. Daher funktioniert keine dieser Antworten wie gewünscht, wenn Sie den Rest einer Zeile löschen, um anschließend etwas an derselben Stelle einzufügen, da alles, was gerade gelöscht wurde, anschließend eingefügt wird anstelle dessen, was vorher gerissen wurde.

Der wahre Löschbefehl im OP-Kontext lautet "_D(oder "_Cwenn der Einfügemodus gewünscht wird). Dadurch wird der gelöschte Inhalt in das von gekennzeichnete Black-Hole-Register gesendet "_, wo er niemanden mehr stört (obwohl Sie diese Aktion immer noch rückgängig machen können u).

Abgesehen davon wird alles, was zuletzt gezogen wurde, im 0-Register gespeichert , und selbst wenn es im unbenannten Register ersetzt wird, kann es dennoch mit eingefügt werden "0p.

Erfahren Sie mehr über das Black Hole Register und die Register im Allgemeinen für zusätzlichen VIM-Spaß!

AFOC
quelle
4

Doder ddlöscht und kopiert die Zeile in das Register. Sie können verwenden, Vxdie nur die Zeile löscht und im normalen Modus bleibt.

Bahman Eslami
quelle