Da ich zwanghaft und zwanghaft bin und meine Dateien gerne frei von Leerzeichen halte, ist es für mich eine ziemlich übliche Operation, den Inhalt einer gesamten Zeile zu löschen , nicht jedoch die Zeile selbst (dh nicht den Zeilenumbruch).
Gibt es eine eingebaute vim Möglichkeit, dies zu tun? Vielleicht eine d<movement command>
Operation?
Bisher ist das Beste, was ich habe (in der fraglichen Zeile) 0d$. Gibt es einen schnelleren Weg?
key-bindings
cursor-movement
Andrew Ferrier
quelle
quelle
:%s/\s*$//
Antworten:
Sie können
0D
dies verwenden, um zum ersten Zeichen in der Zeile zu gehen und bis zum Ende der Zeile zu löschen. Beachten Sie, dass Sie verwenden können,^D
wenn Sie vorangestellte Leerzeichen in Ruhe lassen möchten. Diese Vorgänge können auch nicht mit wiederholt werden.
. Wenn Sie eine Operation wünschen, die mit dem.
Befehl wiederholt werden kann , lesen Sie die Antwort von David Lord.Hilfethemen:
:help 0
:help D
:help ^
quelle
.
Befehl nicht wiederholbar . Aus diesem Grund halte ichcc<Esc>
oderS<Esc>
ist attraktiver, wenn Sie sich für das Wiederholen interessieren..
..
. Sie funktionieren so, als ob diese Tastenanschläge interaktiv eingegeben würden, sodass einzelne Befehle separat behandelt werden. Mit.
wird nur der letzte Befehl im Makro wiederholt.@{reg}
, können Sie es mit.
anschließend wiederholen .D
. Nach einer0D
Operation bleibt der Cursor in Spalte 0. Befindet sich der Cursor bereits am Zeilenanfang (nachdem Sie zu einem anderen übergegangen sind), sieht es so aus, als ob das Makro ordnungsgemäß wiederholt wurde. Bewegen Sie den Cursor in der Zeile nach vorne und tippen.
Sie etwas - Sie werden sehen, dass es sich nur wiederholtD
.cc <Esc>
wird tun, was Sie fragen, ist aber mehr Tastenanschläge als0D
. Wenn Sie danach etwas in diese Zeile einfügen möchten, ist diescc
möglicherweise das Beste.quelle
.
Befehl wiederholt werden . Im Gegensatz dazu gibt es0D
(wie in der gewählten Antwort vorgeschlagen) zwei Aktionen: die0
Bewegung und denD
Befehl.0D
für mich , da ichjk
abgebildet<Esc>
in meinem vimrc, also nicht einmal meine Hände , um die Grundreihe verlassen müßten.S
ist als "Synonym fürcc
" dokumentiertS
und dannCtrl+C
oderEsc
scheint genau die gleiche Funktion zu erfüllen.Es kann dann wiederholt werden,
.
da es eine einzelne Aktion darstellt.quelle
0D
ist wahrscheinlich was du willst. Es wird vom Cursor bis zum Ende der Zeile gelöscht, während die Zeile (und alle Zeichen vor dem Cursor) an Ort und Stelle verbleiben.quelle
0D
löschen wird vom Anfang der Zeile , nicht von der CursorpositionIch benutze normalerweise
ddO
.dd
um die aktuelle Zeile zu löschen undO
(das ist ein Großbuchstabe o) eine neue Zeile hinzuzufügen.Dies sind ebenfalls 3 Tastenanschläge, die jedoch
dd
nur 1 ½ betragen, und ich finde esO
einfacher zu tippen als$
.Es unterscheidet sich von der
0D
Lösung darin, dass es eine automatische Einrückung ausführt, zum Beispiel mit diesem Code (wo!···
sich ein Tabulator befindet und █ der Cursor:0D
wird dich verlassen mit:Und
ddO
wird dich verlassen mit:Und wenn Sie
<Esc>
sofort danach drücken , sollte Vim die automatische Einrückung entfernen, damit Sie das gleiche wie mit haben0D
.Es gibt keinen "richtigen" Weg, es hängt davon ab, was genau Sie tun möchten. Ich bevorzuge es,
ddO
weil es flexibler ist und weil es "in meinen Fingern" liegt :-)quelle
^D
Lässt das Leerzeichen in Ruhe.O
Sie sich im Einfügemodus befinden, entspricht diescc
, außer ohne automatische Einrückung, .... es sei denn, Ihre Zeile wurde bereits automatisch eingerückt.Und um diesen kostbaren Tastendruck zu speichern, können Sie
0C
alle Zeichen in der aktuellen Zeile löschen und in den Einfügemodus versetzen.quelle