it-swarm.com.de

Löschen Sie vom Cursor bis zum Zeilenende in `vi`

Ich weiß, dass ich dies wahrscheinlich millionenfach in allen vi -Dokumenten durchgesehen habe, die ich gelesen habe, aber ich kann den Befehl zum Löschen vom Cursor bis zum Zeilenende nicht finden.

334
Falmarri

Der Befehl dw wird von der aktuellen Cursorposition bis zum Anfang des nächsten Word-Zeichens gelöscht. Der Befehl d$ (Beachten Sie, dass dies ein Dollarzeichen ist, kein 'S') wird von der aktuellen Cursorposition bis zum Ende der aktuellen Zeile gelöscht. D ist ein Synonym für d$.

499
Tok

Wie andere bereits erwähnt haben: Sie können d$ Oder D (shift- -d), um von der Cursorposition bis zum Ende der Zeile zu löschen.

Was ich normalerweise nützlicher finde, ist c$ Oder C (shift- -c), weil es bis zum Ende der Zeile von der Cursorposition gelöscht wird nd versetzt Sie in den [INSERT] -Modus.

54
Brad Johnson

Eines der schönen Dinge an vi ist seine logische Befehlsstruktur. d gefolgt von einem Bewegungsbefehl d elets zum Ziel dieser Bewegung. $ bewegt sich zum Ende der Zeile (Mnemonik: wie in regulären Ausdrücken). Damit d$ wird bis zum Zeilenende gelöscht. In ähnlicher Weise bewegt sich e zum e nd des aktuellen Wortes und w zum Anfang des nächsten w ord; de löscht also das Ende des aktuellen Wortes und dw löscht zusätzlich das folgende Leerzeichen.

Sie möchten wahrscheinlich D verwenden. Bewegen Sie den Cursor auf das erste Zeichen, das Sie löschen möchten, und drücken Sie dann Umschalt-D. Alles weg. Tatsächlich befindet es sich im Standard-Schnittpuffer, sodass Sie ihn wieder einfügen oder einfügen können.

Ich benutze Dp (Löschen bis zum Zeilenende, dann zurücksetzen), gehe zum Ende einer anderen Zeile und p erneut, um denselben Text am Ende dieser anderen Zeile einzufügen. Wirkt Wunder in Konfigurationsdateien, in denen Sie eine komplizierte URL an zwei oder mehr Stellen einfügen müssen.

21
Bruce Ediger

Um einen Zeilenbereich nach der Cursorposition zu löschen, 3D wird vom Cursor bis zum Ende der Zeile sowie bis zu den nächsten beiden Zeilen vollständig gelöscht (d. h. 3 Zeilen nach der Cursorposition werden gelöscht).

z.B. für den folgenden Text (Cursor dargestellt als |),

If there's a cursor |in the line
here
we
go

Verwenden des Befehls 3D wird ausgegeben:

If there's a cursor
go
1
Nick Bull

Ich denke, eine Verknüpfung im Einfügemodus könnte nützlich sein.

Im Einfügemodus ist es vielleicht besser, mit dem Ändern bis zum Ende der Zeile zu beginnen (setzen Sie dies auf Ihr ~/.vimrc):

inoremap <C-l> <C-o>C

Sie haben also, wie gesagt, D im normalen Modus und Ctrl+l im Einfügemodus. Wie Sie sehen können, haben Sie auch C das beginnt sich bis zum Ende der Zeile zu ändern.

<C-o> ......... insert normal keystroke in insert mode

Ich habe mich entschieden Ctrl- -l weil l unter Ihren Fingern ist. Das Ctrl- -k wird bereits zum Einfügen von Digraphen verwendet.

Ich habe :h i_Ctrl für einige kostenlose Tastenkombinationen, und es ist tatsächlich das größere Problem, wenn es darum geht, neue Verknüpfungen zum Ausführen von Aktionen in vim zu erstellen.

1
SergioAraujo