В длинном файле я хотел бы найти шаблон, который будет соответствовать примерно 200 строкам или около того. Соответствующие строки находятся в случайных местах в файле.
Когда строка соответствует, релевантна только сама строка, без контекста выше или ниже.
Обычно я искал /
и прыгал через совпадения n
.
Но это означает, что на экране одновременно может быть только одна или две соответствующие строки.
Есть ли способ скрыть все строки, которые не совпадают, при просмотре списка строк результатов?
Подход грубой силы должен был бы удалить все несоответствующие линии, и отменить это удаление позже. Но это безобразно по-разному, даже если это не приведет к постоянному уничтожению ...
:vimgrep
может быть сокращено до:vim
:ccl[ose]
или, как обычно, закрыть буфер (например, переключиться на него и:bd
). Вы можете снова открыть буфер быстрого исправления, запустив его:cw[indow]
снова, и он будет использовать ваши последние результаты vimgrep.Вы можете перечислить все соответствующие строки с
(Команда
:print
может быть опущена; это значение по умолчанию для:g
.)источник
g/REgexp/p
) ... Проблема в том, что вы не можете легко перейти к одному из матчей, хотя ...g
. Я предполагаю, что это глобальная модель. Я обычно делаю VI поиск с косой чертой,/pattern
и это будет найти все вхождения. К ним можно перейти, нажав на буквуn
:g[lobal]
которая принимает шаблон в качестве аргумента. Вы найдете все детали на:help :global
.Вы можете использовать опции
foldmethod
иfoldexpr
, чтобы сложить ненужные строки.После поиска последний поиск сохраняется в
@/
реестре. Таким образом, вы можете легко сложить все, что не соответствует так (только для однострочных совпадений):Более сложные методы, такие как добавление нескольких уровней свертывания для строк контекста, которые вы можете показать или скрыть, или сопоставление нескольких строк, можно найти в Vim Tips Wiki .
источник
set foldlevel=0
необходимость? Но, возможно, это по умолчанию.:tab sp
получаю новый одноразовый вид на файл. Тогда вернуться так же просто, как:close
и любой другой способ убить вкладку.Если порядок не имеет значения, просто переместите линии.
Для получения дополнительной помощи см .:
источник
:g/pat/m$
(переместите совпавшие строки до конца) также все в порядке,[d] удаляет все строки, не соответствующие (!) шаблонам:
или даже проще (спасибо за комментарии «B Layer»):
источник
:v
, чем:g!
. (Я не помню, когда в последний раз видел последний использованный, TBH!)Если вы хотите перечислить все совпадающие строки (как в моем другом ответе), а затем перейти к одному конкретному совпадению, мой плагин FindOccurrence обеспечивает
[/
сопоставление для этого (и[n
для последнего шаблона поиска вместо запроса одной).[/pattern
списки, как:g/pattern
, но затем просит номер матча, чтобы перейти к.источник
Другой способ заключается в использовании
:h :ilist
, я использую его, чтобы получить обзор справочной страницы. результат выглядит так:Вот небольшая функция, которая позволяет вам перейти к строке результата по индексу:
Это можно использовать так:
источник