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(повертає кількість рядків)
sehe

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.