Vim - подсчитать строки в выбранном диапазоне


83

Я хочу подсчитать строки в диапазоне, независимо от того, какой диапазон, но пусть это будет, скажем, визуальный блок. Какой самый короткий способ это сделать. Все, что мне приходит в голову, это что-то вроде: '<,'>s/.//n но я не верю, что это кратчайший путь.

Так может кто-нибудь мне намекнуть? Заранее спасибо.

Ответы:


141

В визуальном режиме нажмите gC-g

Типичный результат:

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


Источник : :he count-items(можно обнаружить как: :heTabTab... )


Большой! Спасибо за этот совет, как только пройдет 10 минут, отмечу это как ответ) Но интересно, тем не менее, есть ли в vim функция. Я почти уверен, что должна быть функция.
shabunc

@shabunc: что значит "есть ли функция в vim"? Вы имеете в виду то, что можете :call? В вашем вопросе об этом не упоминалось.
Лоуренс Гонсалвес

функция в том же смысле, что и другие встроенные функции ( :h functions;)
shabunc

1
@shabunc Итак, "да". Вы не упомянули, что хотите использовать функцию в своем вопросе. Я не верю, что существует встроенная функция для подсчета количества строк в диапазоне, но вы можете довольно легко определить свою собственную с помощью двух вызовов getpos()(которые могут принимать метку в качестве входных данных и возвращать позицию, включая номер строки) и немного вычитания.
Лоуренс Гонсалвес,

1
@shabunc: Ближайшее, что я могу найти, это :perl $curbuf->Count(возвращает количество строк)
см.

22

Установите опцию showcmd( :h 'sc'), и вам никогда не потребуется вводить что-либо, чтобы узнать, сколько строк выбрано - сначала, поскольку я забыл, что установил эту опцию, я не понял сути вашего вопроса. ^^ '

В противном случае, если вы хотите получить это число программно, это просто:

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

Из функции диапазона его также можно получить с помощью a:lastline-a:firstline+1. ( :h function-range-example)


8

'<,'>s///nна один символ короче. :-)

Если я просто хочу узнать количество строк в визуальном выделении, я обычно просто дергаю его (ударяю y). В зависимости от типа выбора будет сказано: «Выдернуто 5 строк» ​​или «Выдернуто блок из 5 строк».


2
меня тоже обычно дергает с этой целью. И сегодня я вдруг понял, что пора узнавать что-то новое)))
shabunc
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.