Ich weiß, dass ich in all den VI-Dokumenten, die ich gelesen habe, wahrscheinlich eine Million Mal darüber nachgesehen habe, aber ich kann den Befehl zum Löschen vom Cursor bis zum Zeilenende nicht finden.
Ich weiß, dass ich in all den VI-Dokumenten, die ich gelesen habe, wahrscheinlich eine Million Mal darüber nachgesehen habe, aber ich kann den Befehl zum Löschen vom Cursor bis zum Zeilenende nicht finden.
Antworten:
Der Befehl dwlöscht von der aktuellen Cursorposition bis zum Anfang des nächsten Wortzeichens. Der Befehl d$(Anmerkung, das ist ein Dollarzeichen, kein 'S') wird von der aktuellen Cursorposition bis zum Ende der aktuellen Zeile gelöscht. Dist ein Synonym für d$.
dw
, aber ich nehme an, es gäbe einen Befehl "Rest dieser Zeile löschen". Zum Beispiel meiner Linie hat ip=|10.1.1.1
mit |
der Cursor - Position zu sein. Gibt es einen Befehl, der alle löscht 10.1.1.1
?
d$
:!rm -f %
und dann verwenden :q!
. Das löscht die gesamte Datei.
d^
('d' + Caret) ... im Grunde genommen d + jedes Zeichen, das normalerweise den Cursor bewegen würde, denke ich, aber ich lerne Vim selbst, also könnte ich mich darin irren.
Wie bereits erwähnt: Mit d$
oder D
( shift- d) können Sie von der Cursorposition bis zum Zeilenende löschen.
Was ich normalerweise nützlicher finde, ist c$
oder C
( shift- c), weil es von der Cursorposition bis zum Ende der Zeile löscht und Sie in den [INSERT] -Modus versetzt.
D
meiner Meinung nach viel besser als für die meisten Menschen, da es Sie dann nicht um ein Leerzeichen am Ende der Zeile zurückbewegt.
i
der vor dem Cursor und a
nach dem Cursor eingefügt wird. Wenn sich Ihr Cursor am Ende der Zeile befindet und Sie am Ende der Zeile einfügen möchten, können Sie einfach verwenden a
.
Eines der schönen Dinge an vi ist seine logische Befehlsstruktur. d
gefolgt von einem Bewegungsbefehl d wird zum Ziel dieser Bewegung gelöscht. $
bewegt sich an das Ende der Zeile (mnemonisch: wie in regulären Ausdrücken). Also d$
löscht bis zum Zeilenende. In ähnlicher Weise e
bewegt sich in die e nd des aktuellen Worts, und w
bewegt sich zu Beginn des nächsten w ord; so de
löscht das Ende des aktuellen Wortes und dw
zusätzlich löscht die folgenden Leerzeichen.
<kbd>
für aktuelle Tasten, nicht für Befehlssequenzen. ZB <kbd>Ctrl</kbd>+<kbd>C</kbd>
aber d$
.
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 die Umschalttaste D. Alles weg Tatsächlich befindet es sich im Standard-Ausschneidepuffer, sodass Sie es wieder einfügen können.
Ich verwende Dp (Löschen zum Ende der Zeile, dann wieder einfügen), gehe zum Ende einer anderen Zeile und wieder p, um den gleichen Text am Ende dieser anderen Zeile einzufügen. Wirkt Wunder in Konfigurationsdateien, in denen Sie eine komplizierte URL an zwei oder mehr Stellen platzieren müssen.
Ich denke, eine Abkürzung für den 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 Ihre ~/.vimrc
):
inoremap <C-l> <C-o>C
Sie haben also, wie gesagt, Dim normalen Modus und im Einfügemodus Ctrl+ l. Wie Sie sehen C, ändert sich auch das bis zum Ende der Zeile.
<C-o> ......... insert normal keystroke in insert mode
Ich habe gewählt Ctrl- lweil l
es unter Ihren Fingern ist. Das Ctrl- kwird bereits zum Einfügen von Digraphen verwendet.
Ich habe nach :h i_Ctrl
einigen freien Tastenkombinationen gesucht , 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.
Wenn Sie einen 3DZeilenbereich nach der Cursorposition löschen möchten, werden der Cursor bis zum Zeilenende sowie die nächsten beiden Zeilen vollständig gelöscht (dh 3 Zeilen nach der Cursorposition werden gelöscht).
zB für folgenden Text (Cursor dargestellt als |
),
If there's a cursor |in the line
here
we
go
Mit dem Befehl 3Dausgeben wird:
If there's a cursor
go