Я предполагаю, что это сработает, только если в шаблоне не используется '. *'
AK
10
Не нужно повторять строку, просто сделай %s/string//ng.
slm
23
(похоже, как сказал Густаво, но дополнительно :)
Для любого предыдущего поиска вы можете просто:
:%s///gn
Шаблон не нужен, потому что он уже находится в поисковом регистре ( @/).
«%» - сделать s/во всем файле
«g» - поиск глобальный (с несколькими совпадениями в одной строке)
«n» - запретить замену s/- ничего не удаляется! ничего не должно быть отменено!
(см .: :help s_flagдля получения дополнительной информации)
(Таким образом, он отлично работает с « Поиском визуально выделенного текста », как описано в vim-wikia tip171 )
:вы входите из Commandв Command-lineрежим. Теперь все, что вы пишете после, :находится в CLI (интерфейсе командной строки)
%sуказывает все строки. Указание диапазона как %средство подстановки во всем файле. Синтаксис для замены всех вхождений::%s/old-text/new-text/g
gуказывает все вхождения в строке. С помощью gфлага вы можете заменить всю строку. Если этот gфлаг не используется, заменяется только первое вхождение в строке.
n указывает на вывод количество вхождений
//двойная косая черта означает пропуск replacement text. Потому что мы просто хотим найти.
Получив количество вхождений, вы можете нажать Nклавишу, чтобы просмотреть вхождения один за другим.
Для поиска и подсчета в конкретном диапазоне номеров строк от 1 до 10:
: 1,10 с / привет // gn
Обратите внимание, %что весь файл заполняется ,разделенными номерами строк.
Для поиска и замены, в частности, диапазона строк с 1 по 10:
Выполните поиск с помощью, *чтобы выполнить «ограниченный поиск» того, что находится под курсором, или выполните стандартный /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
) ужасен, опасен и уступает другим на этой странице. Пожалуйста, отмените выбор.Ответы:
Это удалит все строки с шаблоном и сообщит, сколько удалено. Отменить, чтобы вернуть их после.
источник
Путь
:% s / шаблон // gn
источник
Тебе нужен
n
флаг. Для подсчета слов используйте:и конкретное слово:
См.
count-items
Раздел документации.Если вы просто наберете:
тогда в строке состояния также будет указано количество совпадений в vi.
источник
:% s / string / string / g даст ответ.
источник
%s/string//ng
.(похоже, как сказал Густаво, но дополнительно :)
Для любого предыдущего поиска вы можете просто:
Шаблон не нужен, потому что он уже находится в поисковом регистре (
@/
).«%» - сделать
s/
во всем файле«g» - поиск глобальный (с несколькими совпадениями в одной строке)
«n» - запретить замену
s/
- ничего не удаляется! ничего не должно быть отменено!(см .:
:help s_flag
для получения дополнительной информации)(Таким образом, он отлично работает с « Поиском визуально выделенного текста », как описано в vim-wikia tip171 )
источник
использовать
когда строка шаблона слишком длинная и вам не нравится набирать ее снова.
источник
Краткий ответ :
Для обучения :
В редакторе VI есть 3 режима, как показано ниже.
:
вы входите изCommand
вCommand-line
режим. Теперь все, что вы пишете после,:
находится в CLI (интерфейсе командной строки)%s
указывает все строки. Указание диапазона как%
средство подстановки во всем файле. Синтаксис для замены всех вхождений::%s/old-text/new-text/g
g
указывает все вхождения в строке. С помощьюg
флага вы можете заменить всю строку. Если этотg
флаг не используется, заменяется только первое вхождение в строке.n
указывает на вывод количество вхождений//
двойная косая черта означает пропускreplacement text
. Потому что мы просто хотим найти.Получив количество вхождений, вы можете нажать
N
клавишу, чтобы просмотреть вхождения один за другим.Для поиска и подсчета в конкретном диапазоне номеров строк от 1 до 10:
%
что весь файл заполняется,
разделенными номерами строк.Для поиска и замены, в частности, диапазона строк с 1 по 10:
источник
Предлагаю сделать:
*
чтобы выполнить «ограниченный поиск» того, что находится под курсором, или выполните стандартный/pattern
поиск.:%s///gn
чтобы получить количество вхождений. Или вы можете использовать:%s///n
для получения количества строк с вхождениями.** Я действительно мог найти плагин, который выдавал бы сообщение «соответствует N из N 1 на N 2 строках» при каждом поиске, но, увы.
Примечание: пусть вас не смущает запутанная формулировка вывода. Первая команда может дать вам что-то вроде того,
4 matches on 3 lines
что может дать вам вторая3 matches on 3 lines
. Хотя последний технически точен, он вводит в заблуждение и должен сказать «3 строки совпадают». Итак, как видите, в действительности нет необходимости использовать последнюю (только "n") форму. Вы получите ту же информацию, более четко и многое другое, используя форму «gn».источник