Я хочу шукати рядок і знайти кількість входжень у файлі за допомогою редактора vi.
Я хочу шукати рядок і знайти кількість входжень у файлі за допомогою редактора vi.
Відповіді:
:g/xxxx/d
Це видалить усі рядки з малюнком і повідомить, скільки видалено. Скасуйте, щоб повернути їх після.
Шлях є
:% s / візерунок // gn
Вам потрібен n
прапор. Для підрахунку слів використовуйте:
:%s/\i\+/&/gn
і конкретне слово:
:%s/the/&/gn
Дивіться count-items
розділ документації.
Якщо ви просто введіть:
%s/pattern/pattern/g
тоді рядок статусу також дає вам кількість збігів у vi.
(подібно до того, як сказав Густаво, але додатково:)
Для будь-якого раніше пошуку ви можете просто:
:%s///gn
Шаблон не потрібен, тому що він вже знаходиться в реєстрі пошуку ( @/
).
"%" - виконайте s/
у всьому файлі
"g" - пошук у глобальному масштабі (з кількома зверненнями в одному рядку)
"n" - запобігає будь-якій заміні s/
- нічого не видаляється! нічого не повинно бути скасовано!
(див. :help s_flag
для отримання додаткової інформації)
(Таким чином, він прекрасно співпадає з " Пошук візуально вибраного тексту ", як описано в підказці vim-wikia171 )
використання
:% s / шаблон / \ 0 / g
коли рядок шаблону занадто довга, і вам не подобається вводити все знову.
Коротка відповідь :
:% s / рядок для пошуку // gn
Для навчання :
У VI редакторі є 3 режими, як показано нижче
:
ви переходите Command
в Command-line
режим. Тепер те, що ви пишете після, :
є на CLI (інтерфейс командного рядка)%s
вказує всі рядки. Визначаючи діапазон як %
засіб, виконується підміна у всьому файлі. Синтаксис для заміни всіх подій є:%s/old-text/new-text/g
g
вказує всі події в рядку. За допомогою g
прапора ви можете зробити заміну всієї лінії. Якщо цей g
прапор не використовується, то буде замінено лише перше виникнення в рядку.n
вказує на вихідну кількість подій //
подвійна коса риса - це опущення replacement text
. Тому що ми просто хочемо знайти.Отримавши кількість випадків, ви можете натиснути N
клавішу, щоб побачити події окремо.
Для знаходження та підрахунку конкретного діапазону рядків від 1 до 10:
: 1,10с / привіт // гн
%
оскільки весь файл поповнюється ,
окремими номерами рядків. Для пошуку та заміни в конкретному діапазоні рядка № 1 до 10:
: 1,10s / helo / hello / gn
Я пропоную зробити:
*
щоб зробити "обмежений пошук" для того, що знаходиться під курсором, або виконати стандартний /pattern
пошук.:%s///gn
для отримання кількості подій. Або ви можете скористатися :%s///n
для отримання кількості рядків із явищами.** Я дійсно з я зміг знайти плагін , який дає повідомлення про «відповідає N з N 1 на N 2 лінії» з кожним пошуком, але на жаль.
Примітка: Не слід плутати хитрі формулювання результату. Колишня команда може дати вам щось на зразок того, 4 matches on 3 lines
де може дати вам остання 3 matches on 3 lines
. Хоча технічно точний, останній вводить в оману і повинен говорити "3 рядки відповідають". Отже, як ви бачите, дійсно ніколи не потрібно використовувати останню (лише "n") форму. Ви отримуєте ту саму інформацію, чіткіше та більше, використовуючи форму 'gn'.
:g/xxxx/d
) страшна, небезпечна та поступається іншим на цій сторінці. Скасуйте вибір.