Wie lösche ich bis zum Ende der vorherigen Zeile?

8

Ein Beispiel (Das ^ist die Cursorposition):

Vor:

a bc def ghi
j k l mn o p q rs
      ^

Nach:

a bc def ghimn o p q rs
            ^

oder zumindest:

a bc def ghimn o p q rs
           ^

Ich weiß, dass ich verwenden kann d0i<BS>, aber ich möchte einen schnelleren Weg, dies zu tun, und ich möchte im Befehlsmodus bleiben. Ich bin ein Anfänger in Vim und ich denke, dass die Antwort vielleicht eine Modifikation von ist kA.

Vielen Dank! :-)

silviubogan
quelle
1
Wenn Sie dies häufig tun, sollten Sie in Betracht ziehen, ein eigenes Mapping dafür zu schreiben, vielleicht so etwas <Leader>dk.
Kyle Strand

Antworten:

9

Versuchen d0kJx

Löscht rückwärts zum Zeilenanfang, bewegt sich nach oben, verbindet die beiden Zeilen und entfernt den Abstand zwischen den beiden verbundenen Zeilen.

Sie müssen den normalen Modus damit nicht verlassen.

Bryan Glazer
quelle
2
Dies ist die einzige Antwort, die (1) weder den Suchverlauf noch die aktuelle Hervorhebung ändert und (2) die nicht löscht m.
Kyle Strand
12

Nun, Sie können die Bewegung "Rückwärtssuche" und den deleteOperator kombinieren :

d?$<Enter>
VanLaser
quelle
In .vimrc habe ich Folgendes: set hlsearchund d?$<Enter>tut, was ich gefragt habe, aber es hebt auch alle Zeilenenden in der Datei hervor, sodass ich danach eingeben muss :noh, um die Hervorhebung zu entfernen. Gibt es eine Möglichkeit, dies zu vermeiden? Vielen Dank! :-)
Silviubogan
1
Es gibt wahrscheinlich, was ich mache, ist einfach "Überlastung" <C-l>im normalen Modus:, nnoremap <silent><C-l> :nohlsearch<cr>:set nolist<cr>:redraw!<cr>dann benutze es bei Bedarf (dh in Fällen wie den oben genannten).
VanLaser
3

Mit visuellem Modus: hvk$d

Erläuterung
h - Verschieben Sie eine nach links
v- Starten Sie den visuellen Modus
k$- Verschieben Sie zum Ende der vorherigen Zeile
d- Löschen Sie die Auswahl

Karl Yngve Lervåg
quelle
mVielleicht mit eingeschaltetem Cursor hvk$d? (um es nicht zu wählen)
VanLaser
1
Ah ja. Jetzt aktualisieren.
Karl Yngve Lervåg