Vim - Zähllinien im ausgewählten Bereich

82

Ich möchte Linien in einem Bereich zählen, egal in welchem ​​Bereich, aber es soll beispielsweise ein visueller Block sein. Was ist der kürzeste Weg, um es zu tun. Alles, was mir in den Sinn kommt, ist so etwas wie: '<,'>s/.//n aber ich glaube nicht, dass es der kürzeste Weg ist.

Kann mir jemand einen Hinweis geben? Danke im Voraus.

shabunc
quelle

Antworten:

139

Drücken Sie im visuellen Modus gC-g

Typische Ausgabe:

Selected 7 of 22 Lines; 8 of 32 Words; 201 of 491 Chars; 201 of 497 Bytes-- VISUAL LINE --


Quelle : :he count-items( erkennbar als: :heTabTab... )

sehe sehen
quelle
Toll! Vielen Dank für diesen Tipp, sobald 10 Minuten vergehen, werde ich dies als Antwort markieren.) Aber es ist trotzdem interessant, ob es eine Funktion in vim gibt. Ich bin mir ziemlich sicher, dass es eine Funktion geben sollte.
Shabunc
@shabunc: was meinst du mit "gibt es eine funktion in vim"? Meinst du etwas, was du kannst :call? Ihre Frage hat das nicht erwähnt.
Laurence Gonsalves
Funktion nur im Sinne wie andere eingebaute Funktionen ( :h functions;)
Shabunc
1
@shabunc Also "ja" dann. Sie haben in Ihrer Frage nicht erwähnt, dass Sie eine Funktion wünschen. Ich glaube nicht, dass es eine eingebaute Funktion gibt, um die Anzahl der Zeilen in einem Bereich zu zählen, aber Sie können Ihre eigene ziemlich einfach mit zwei Aufrufen an definieren getpos()(die eine Markierung als Eingabe akzeptieren und die Position einschließlich der Zeilennummer zurückgeben können). und ein bisschen Subtraktion.
Laurence Gonsalves
1
@ Shabunc: Der nächste, den ich finden kann, ist :perl $curbuf->Count(gibt die Anzahl der Zeilen zurück)
sehe
22

Wenn Sie die Option showcmd( :h 'sc') festlegen, müssen Sie nie etwas eingeben, um zu wissen, wie viele Zeilen ausgewählt sind. Da ich zunächst vergessen habe, dass ich diese Option festgelegt habe, habe ich den Punkt Ihrer Frage nicht verstanden. ^^ '

Wenn Sie diese Nummer programmgesteuert erhalten möchten, ist dies einfach:

:echo line("'>") - line("'<") + 1

Innerhalb einer Bereichsfunktion kann es auch erhalten werden durch a:lastline-a:firstline+1. ( :h function-range-example)

Luc Hermitte
quelle
8

'<,'>s///nist ein Zeichen kürzer. :-)

Wenn ich nur die Anzahl der Zeilen in einer visuellen Auswahl wissen möchte, ziehe ich normalerweise einfach daran (Treffer y). Je nach Art der Auswahl wird "5 Zeilen gezogen" oder "Block mit 5 Zeilen gezogen" angezeigt.

Laurence Gonsalves
quelle
2
Ich ziehe auch normalerweise zu diesem Zweck. Und heute wurde mir plötzlich klar, dass es Zeit ist, etwas Neues
shabunc