Vim折叠:如何隐藏所有不包含搜索模式的单行(或折叠零线)?

时间:2013-09-26 19:04:34

标签: vim folding

我的文本文件只是没有段落的列表。 当我想专注于一个项目时,我能够将除了匹配之外的所有东西都折叠到我的搜索中,感谢Vim Wikia(提示282:“简单折叠”):

:set foldexpr=getline(v:lnum)!~@/
:nnoremap <F8> :set foldmethod=expr<CR><Bar>zM

这证明是有用的:因此我可以非常清楚地看到我正在寻找的物品:它们在黑色背景上显示为白色,而灰色(ctermbg)上的折叠是暗灰色(ctermfg)。

但是有一个 - 次要 - 故障。可能发生(并且实际上经常发生)不包含该模式的单行保留在包含该模式的两行之间,例如:

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

简单折叠将折叠第2和第3行,而不是第5行。

我应该如何隐藏这一行呢?

有没有办法折叠零线(这让我想起一只手鼓掌的公案......)?我想这是不可能的。

那么,有没有办法用函数隐藏线条(例如与折叠相同的高亮显示)?

1 个答案:

答案 0 :(得分: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.