2013-09-26 2 views
2

У меня есть текстовые файлы, которые являются просто списками без абзацев. Когда я хочу сосредоточиться на предмете, я могу сложить все спички в моих поисках, кроме, благодаря Vim Викия (Подсказка 282: «Простой Складные»):Vim folding: как скрыть все отдельные строки, не содержащие шаблон поиска (или свернуть нулевую строку)?

:set foldexpr=getline(v:lnum)[email protected]/ 
:nnoremap <F8> :set foldmethod=expr<CR><Bar>zM 

Это оказывается полезным: поэтому я могу очень четко видеть предметы, которые я ищу: они появляются в белом на черном фоне, тогда как складки - темно-серый (ctermfg) на сером (ctermbg).

Но есть - несовершеннолетний - сбой. Это может произойти (и, на самом деле, это часто бывает), что одна строка, не содержащая образец остается между двумя строками, содержащими шаблон, например:

1 pattern 
2 not pattern 
3 not pattern 
4 pattern 
5 not pattern 
6 pattern 

Простой foldind будет складывать линии 2 и 3, а не линии 5.

Как мне перейти, чтобы скрыть эту единственную строку?

Есть ли способ сбросить нулевую линию (это напоминает мне о коане об одной руке, хлопающей ...)? Я полагаю, что это невозможно.

Итак, есть ли способ просто спрятать линию (например, с тем же подсветкой, что и складки) с помощью функции?

ответ

6

пытаются set другой вариант:

set fml=0 

Более подробную информацию об этой опции:

:h 'fml' 

, имеющие отношение к вашему вопросу:

With the default value of 
    one a fold can only be closed if it takes up two or more screen lines. 
    Set to zero to be able to close folds of just one screen line. 
+0

Superb. Именно то, что я искал, или, скорее, не искал, поскольку я думал, что это невозможно ... Большое вам спасибо! – ThG

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