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