2015-08-13 3 views
2

Как показать все строки только в открытых складках, соответствующих «foo»?Как показать строки, соответствующие поиску в открытых складках в vim?

Я попробовал это на "search only in folded text":

:folddoopen g/foo 

но получил эту ошибку: E147: Cannot do :global recursive


версия ВИМ: 7.3 (2010 15 августа)

+0

Это зависит от того, что вы хотите сделать. Если все, что вам нужно, - это видеть линии, которые соответствуют, а не перемещать курсор туда, решение состоит в том, чтобы включить 'hlsearch' (см.': Help 'hlsearch'). Закрытые складки останутся закрытыми, поэтому вы не увидите никаких совпадений внутри. :) –

+0

Вы не можете использовать ': foldd [oopen]', за которым следует 'global', потому что' foldd' по сути является самой командой 'global' (кроме того, что вместо того, чтобы брать шаблон для строк, на которые следует применять' cmd' it автоматически делает это для всех не сложенных линий). – Marth

ответ

4

кажется, что вы не можете использовать :folddoopen и :g вместе любым значимым способом. Вместо этого вы должны использовать :g с foldclosed().

:g/foo/if foldclosed('.') == -1 | # | endif 

Для получения дополнительной справки смотрите:

:h :g 
:h :folddoopen 
:h :# 
:h :if 
:h foldclosed() 
+0

Нет, это фактически возвращает все строки. –

+0

Вы правы, вы должны использовать 'foldclosed()' –

+0

Ближе, но это возвращает линии в закрытой складке. –

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