我以前使用位置列表(:lvimgrep)来显示缓冲区的内容,但是最近我发现折叠是一种有趣的选择。我正在使用foldmethod=expr
和foldexpr=getline(v:lnum)=~'.'?1:0
选项。所有非空行(也称为段落)都被折叠并由空行分隔。在这里您可以看到original文件和folded。与位置列表相比,此方法的优势在于它可以显示行数,并且不需要额外的缓冲区。但是,出于可读性考虑,最好删除折叠之间的空白行,但我不知道该怎么做。可以手动折叠,但是如果我们在foldexpr
中包含空行,vim会将所有这些段落合并为一个折叠。如何分开? Here is的外观。
答案 0 :(得分:2)
您可以像这样将空行作为上一段的一部分:
:set foldexpr=strlen(getline(v:lnum))==0?'=':strlen(getline(v:lnum-1))?1:'>1'
如果当前行为空,请使用前一行(=
)的折叠级别。
否则,请检查上一行:如果为空,则必须是新段落的开头。使用>1
创建一个新的1级折叠。否则,它必须是现有段落的一部分;为它指定折叠级别1
。