行是否折叠?- 如何在VIM中检查折叠

9

我正在编写一些折叠功能,现在需要检查当前行是否实际上是一个折叠。

原因是这是一种自定义的折叠方法,它依赖于搜索/匹配某些行。

例如,如果当前行被折叠并且看起来像:

-FOO------------------------

如果你做类似这样的事情:
getline('.')

你基本上会得到FOO,所以没有办法(至少我不知道)知道我是否在折叠位置。

有没有辅助函数可以解决这个问题?

我认为它必须是类似于:

is_folded('.')

我可以通过更改foldtext来为折叠分配特殊标题,但我想避免这样做。

1个回答

14

来自:help eval.txt

foldclosed({lnum})

结果是一个数字。如果行{lnum}在一个闭合的折叠中,则结果是该折叠中第一行的行号。如果行{lnum}不在闭合的折叠中,则返回-1。

您可以检查给定行是否返回-1或行号,您可能可以通过这种方式实现您的isfolded()函数。

如果您正在寻找 Vim 脚本函数或特性,建议首先在包含大量相关信息的eval.txt中搜索。


非常正确。大多数时候我都很惊叹于VIM文档(:help foo),但在像这样的情况下——我不确定如何搜索它——它就很糟糕了。感谢您的快速回复! - alfredodeza
1
@alfredodeza:我不是Vim脚本专家,但我有一种感觉,大多数(如果不是全部)的语法和函数都可以从eval.txt中获取。所以如果你有疑问,你可能想要开始查找这个(非常长的)帮助文件,并快速搜索你的问题。这就是我回答你的问题所做的。 - Xavier T.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接