Можно ли показать / скрыть все совпадающие строки в vi или Vim? Не выделять, а просто показывать только эти линии.
Например, у меня есть текст со словом слово ERROR
. Как сделать так, чтобы он отображал только строки, содержащие ERROR
и как отображать только строки без ERROR
?
Есть ли решение, не удаляя все совпадающие строки, а затем просто отменяя его?
Ответы:
Вы знаете о
:global
команде? Это делает то, что вы хотите?и наоборот:
или эквивалентно:
источник
g<
чтобы снова увидеть, или,@:
если вы не запускали и команды.Другой подход, зависящий от вашего варианта использования, - использовать vimgrep и его результаты в quickfix . Вы можете сделать следующее:
:vimgrep pattern %
выполнит поиск в текущем файле и перейдет к первому результату поиска. Что еще более важно, он также помещает результаты в «список быстрого исправления».:copen
затем откроет список quickfix в отдельном окне quickfix. Таким образом, у вас будет отдельное окно со всеми строками из вашего последнего vimgrep. Затем в окне quickfix вы можете нажать Enter или дважды щелкнуть строку, чтобы перейти к соответствующей строке в исходном файле.:colder
позволит вам вернуться к старым спискам quickfix (более старым результатам vimgrep). И:cnewer
идет к новым результатам поиска.Обратите внимание, что список быстрых исправлений также обновляется при запуске
:make
(поэтому он называется quickfix для исправления ошибок). Из-за этого также есть альтернативный список быстрого исправления, который называется «список местоположений». Для того, чтобы использовать его вместо того, чтобы использовать:lvimgrep
, а затем использовать команды л-приставкой , а не команды с-приставкой -:lopen
,:lolder
,:lnewer
.Конечно, вы можете сделать гораздо больше. Увидеть
:help quickfix
Дополнительную информацию.PS Вы сказали, что не хотите подход, который удаляет строки, а затем отменяет их. Но так как вы отметили
g/ERROR
как ответ, я подумал, что укажу на быстрый и грязный способg!/ERROR/d
. Затем вы можете легко отменить это, используяu
. Также, к вашему сведению, вы можете:set hlsearch
выделить шаблоны, соответствующие:g
командам.источник
Ты можешь использовать
чтобы напечатать все строки с ERROR
Также есть плагин Vim, который я видел много раз, но не использовал: foldsearch: складывайте строки, которые не соответствуют заданному шаблону
источник
Лучший способ сделать это ->
Это откроет список совпадений для вашего ключевого слова, а также покажет только совпавшие строки в окне quickfix.
Замените% на путь к файлу, если не учитываете текущий файл.
источник
:vimgrep /something/g % | copen
отлично работает. Также:g/<pattern>/d
может использоваться для удаления линий с рисункомисточник
в случае, если вы используете,
fzf
вы можете использовать::Lines
во всех открытых файлах:BLines
только в открытом буфере:Rg [pattern]
с помощьюripgrep
источник
Какой-то хакерский грязный способ сделать это:
источник
Вы, вероятно, имеете в виду команду в less vi vim & / pattern /, которая показывает строки, содержащие / pattern / (например, grep).
источник