Другой подход в зависимости от вашего случая использования будет использовать 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
.
http://vi.stackexchange.com/q/2280/12111 – graceman9