2009-05-14 3 views
66

Можно ли показать/скрыть все соответствующие строки в vi или Vim? Не выделяйте, а просто показывайте только те строки.Скрыть все (не) соответствующие строки в Vim

Например, у меня есть текст со словом слово ERROR. Как мне показать только строки, содержащие ERROR и как показывать только строки без ERROR?

Есть ли решение без удаления всех соответствующих строк, а затем просто отменить его?

+0

http://vi.stackexchange.com/q/2280/12111 – graceman9

ответ

76

ли вам знаете о команде :global? Делает ли это то, что вы хотите?

:g/ERROR 

и противоположное:

:g!/Error 

или что то же самое:

:v/Error 
+14

Это не очень хорошо. Когда вы перейдете к нижней части, команда закончится, и все снова появится. На самом деле это не скрывает этого содержания. –

34

Вы можете использовать

:g/ERROR/ 

напечатать все строки с ошибкой

Также есть плагин Vim, который я видел много раз, но не использовал: foldsearch : fold away lines that don't match a given pattern

+12

+1 для ссылки на плагин foldsearch. Это ненавязчиво и может пригодиться. – user55400

+0

+1 для плагина foldsearch. Жизнь спасателя! –

42

Другой подход в зависимости от вашего случая использования будет использовать vimgrep и его результаты в QuickFix. Вы можете сделать следующее:

:vimgrep pattern % будет искать текущий файл и довести до первого результата поиска. Что еще более важно, он также помещает результаты в список «quickfix».

:copen затем откроет список быстрого исправления в отдельном окне быстрого исправления. Таким образом, у вас будет отдельное окно со всеми строками из вашего последнего vimgrep. Внутри quickfix-окна вы можете нажать Enter или дважды щелкнуть по строке, чтобы перейти к соответствующей строке в исходном файле.

:colder позволит вам вернуться к старым спискам fastfix (более старые результаты vimgrep). И :cnewer идет вперед к более новым результатам поиска.

Обратите внимание, что список быстрого обновления также обновляется при запуске :make (поэтому его называют quickfix для исправления ошибок). Из-за этого также существует альтернатива списку быстрого исправления, называемому «списком местоположений». Вместо этого вы используете :lvimgrep, а затем используйте команды l-prefixed, а не команды c-prefixed - :lopen, :lolder, :lnewer.

Существует, конечно, намного больше, что вы можете сделать. См. :help quickfix для получения дополнительной информации.

PS Вы сказали, что вам не нужен подход, который удаляет строки, а затем уничтожает их. Но так как вы отметили g/ERROR как ответ, я думал, что я бы указал на быстрый и грязный способ сделать g!/ERROR/d. Затем вы можете легко отменить его, используя u. Также FYI вы можете сделать :set hlsearch, чтобы выделить шаблоны, соответствующие командам :g.

+0

Спасибо за отзыв «: g!/ERROR/d» лучше, чем принятый ответ. – VinGarcia

0

Вы, вероятно, имеете в виду команду в меньшем vi vim &/pattern/ , который показывает строки, содержащие/рисунок/(например, grep).

12

Лучший способ сделать это это->

:vimgrep /something/g % | copen 

Это откроет список соответствий для вашего ключевого слова, а также будет отображаться только совпавшие строки в QuickFix окне.

+0

Замените% файловым путем, если вы не рассматриваете текущий файл. – Shivendra

+0

очень полезно !!!! Спасибо!!! – ihightower

 Смежные вопросы

  • Нет связанных вопросов^_^