2011-08-31 10 views
55

Chcę policzyć linie w zakresie, nie ma znaczenia jaki zasięg, ale niech będzie, powiedzmy, blokiem wizualnym. Jaki jest najkrótszy sposób to zrobić. Wszystko, co przychodzi mi na myśl, to coś w rodzaju: '<,'>s/.//n , ale nie sądzę, że jest to najkrótsza droga.Vim - policz linie w wybranym zakresie

Czy ktoś może mi podpowiedzieć? Z góry dziękuję.

Odpowiedz

99

W trybie wizualnym nacisnąć gC-G

Typowe Wydajność:

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


Źródło: :he count-items (wykrywalny jako: :heTabTab ...)

+0

Świetnie! Dziękuję za tę wskazówkę, jak tylko minie 10 minut, zaznaczę to jako odpowiedź). Ale interesujące jest to, że istnieje funkcja w vimie. Jestem prawie pewien, że powinna istnieć funkcja. – shabunc

+0

@shabunc: co masz na myśli "czy istnieje funkcja w vim"? Czy masz na myśli coś, co możesz ": zadzwonić"? Twoje pytanie o tym nie wspomniało. –

+0

działa w sensie jak inne wbudowane funkcje (': h funkcje';) – shabunc

5

'<,'>s///n jest krótszy o jeden znak. :-)

Jeśli chcę tylko znać liczbę linii w selekcji wizualnej, zwykle po prostu ją szarpam (trafiam y). W zależności od rodzaju selekcji powie "5-liniowy szarpnięty" lub "zablokowany 5-liniowy sznur".

+2

ja też zwykle szarpię w tym celu. I nagle nagle uświadomiłem sobie, że nadszedł czas, aby usłyszeć coś nowego))) – shabunc

17

Ustaw opcję showcmd (:h 'sc') i nigdy nie będziesz musiał wpisywać niczego, aby wiedzieć, ile wierszy jest wybranych - na początku, ponieważ zapominam, że ustawiłem tę opcję, nie zrozumiałem punkt twojego pytania. ^^”

W przeciwnym razie, jeśli chcesz uzyskać ten numer programowo, to po prostu:

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

Od wewnątrz zakresu funkcją, to można również uzyskać przez a:lastline-a:firstline+1. (:h function-range-example)