Visuelle Auswahl vom Cursor zur nächsten leeren Zeile?

11

Wie wählt man von der aktuellen Zeile zur nächsten leeren Zeile?

Ich bin mir SHIFT+ bewusst, Vaber dann muss ich entweder zur nächsten leeren Zeile springen oder ein paar Mal die Abwärtstaste drücken. Ich weiß, wie man das gut macht, wenn es einen passenden Charakter wie a gibt, }aber ich habe keine Ahnung, wie man das für eine leere Zeile macht.

leeand00
quelle

Antworten:

19

Vim versteht das Konzept eines "Absatzes". Vims Definition eines Absatzes ist ein Textblock, der von Leerzeilen * umgeben ist . Es gibt verschiedene Bewegungen und Textobjekte, um damit zu arbeiten.

  • [count]}- [count]Absätze nach vorne verschieben. Mit können <S-v>}Sie alle Zeilen von der aktuellen Zeile bis zur nächsten leeren Zeile auswählen. Dies schließt die leere Zeile ein, die Sie möglicherweise verwenden möchten <S-v>}k.
  • [count]ip- [count]Absätze auswählen . Es ist wie iw(inneres Wort), abgesehen von Absätzen. Mit vipwird jedoch der gesamte Absatz ausgewählt und nicht von der aktuellen Zeile bis zum Ende des Absatzes.
  • [count]ap- wie ip, außer dass dies die Leerzeilen um den Absatz enthält.

Ein Nachteil dabei ist , dass Vim nicht eine Zeile mit nur Leerzeichen als „Leerzeile“ betrachten. Überprüfen Sie dies (z. B. mit :set list), wenn es nicht zu funktionieren scheint.


Denken Sie auch daran, dass Sie immer nach dem gewünschten Muster suchen können . Sie können eine leere Zeile mit erhalten /^$; oder wenn Sie die leere Zeile selbst nicht auswählen möchten, können Sie \n\nden Cursor am Ende der Zeile vor die erste leere Zeile setzen:

  • <S-v>/^$<CR>
  • <S-v>/\n\n<CR>

* Es gibt einige Ausnahmen, siehe :help paragraphvollständige Logik. Aber für die meisten Absichten und Zwecke funktioniert diese Definition gut.

Martin Tournoij
quelle
12

Eine Verknüpfung für die nächste leere Zeile ist }. Vielleicht möchten Sie also SHIFT+ verwendenv}

Marderh
quelle
1

Durch einfaches Drücken Shift + }wird zur nächsten leeren Zeile ohne Textauswahl gewechselt.

Mit Sift + v + }wählt vim den Text von der aktuellen Cursorposition bis zur nächsten leeren Zeile aus und Sie müssen drücken ESC, um den Auswahlmodus zu verlassen

Junaid
quelle
Warum Shift + }? Ein einfacher }macht den Umzug. Siehe andere Antworten.
Ralf
@Ralf Sift + }zum Aufrufen / Eingeben der geschweiften Klammer, es }sei denn, Ihre Tastatur unterstützt das Einfügen direkt }ohne DrückenShift
Junaid