2

我有文本文件,它们只是没有段落的列表。当我想专注于一个项目时,我可以折叠除匹配项之外的所有内容,这要归功于 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

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

我应该如何继续隐藏这条线?

有没有办法折叠零线(这让我想起了关于一只手拍手的公案……)?我想这是不可能的。

那么,有没有办法用函数简单地隐藏线(例如,与折叠相同的突出显示)?

4

1 回答 1

9

尝试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.
于 2013-09-26T19:58:29.243 回答