Auswählen eines Zeilenbereichs über die Befehlszeile

8

Ich muss (visuell) einen Zeilenbereich aus der Befehlszeile auswählen.

Der folgende Befehl :?^\s*for?+,/^\s*end/- pdruckt beispielsweise alle Zeilen zwischen a forund end(exklusiver Weg). Anstatt den Druckvorgang durchzuführen, möchte ich mit hervorgehobenen Zeilen in den visuellen Modus wechseln. Ich habe im Handbuch gesucht, aber einen solchen Ex-Befehl nicht gefunden.

nicmus
quelle
Meinst du "exklusiv"?
Rich
Du hast recht! Ich habe die Frage bearbeitet
nicmus

Antworten:

7

Die Grenzen einer visuellen Modusauswahl werden durch die Markierungen <und definiert >.

Daher wechselt der folgende Befehl in den visuellen Modus, wobei die Zeilen 5 bis 10 (einschließlich) ausgewählt sind:

 :5mark < | 10mark > | normal gvV
  • :5mark < setzt den Beginn der Auswahl auf Zeile 5,
  • :10mark > setzt das Ende der Auswahl auf Zeile 10,
  • gv wechselt in den visuellen Modus mit dem oben definierten Bereich,
  • V trifft die Auswahl zeilenweise.

Sie können einen beliebigen Vim-Bereich an den :markBefehl übergeben: Folgendes wechselt mit den regulären Ausdrücken in den visuellen Modus foound bardefiniert die Grenzen des Auswahlbereichs:

:execute search("foo") . "mark <" | execute search("bar") . "mark >" | normal gvV

Der folgende Befehl ist eine einfachere Version des oben genannten Befehls, hängt jedoch von der Cursorposition ab:

/foo/mark < | /bar/mark > | normal gvV

Weitere Erklärungen finden Sie unter:

Reich
quelle
Vielen Dank! Ich löste mit:?^\s*for?+ mark < | /^\s*end/- mark > | norm gv
nicmus
@nicmus Ah ja, das ist einfacher für Ihre spezifische Verwendung. Ich habe meine Antwort aktualisiert.
Rich
Nur für zukünftige Leser, die sich fragen könnten, passen die Kommentare in +und -in @ nicmus die Bereiche an, damit die Auswahl nicht die Zeilen enthält, die den regulären Ausdrücken entsprechen. (Siehe :help range)
Rich
Der .Verkettungsoperator hat mich wirklich umgehauen. Hier ist ein Beispiel, wenn jemand das gleiche Gefühl hat: Er :execute "l" . "s"erzeugt die gleiche Ausgabe wie :ls.
Toraritte