如何在Vim中使用foldmethod缩进来创建折叠?

Edv*_*vin 5 vim

我正在尝试学习如何在Vim中使用折叠。手动折叠效果很好,但我想知道如何通过缩进折叠。我希望它像这样工作:

+------
   +--- | //Place marker here and press 'zf'
   +---
+------
Run Code Online (Sandbox Code Playgroud)

将导致:

+------
<fold>
+------
Run Code Online (Sandbox Code Playgroud)

但是我得到

E350: Cannot create fold with current 'foldmethod'

任何想法为什么我会收到此错误?

另外,有没有办法在花括号之间创建折叠呢?

Men*_*ックス 10

如果您想要基于缩进的自动折叠,您需要将该foldmethod选项设置为indentvalue

:set foldmethod=indent
Run Code Online (Sandbox Code Playgroud)

这可能就是您收到该错误的原因。我想它是像上面那样设置的。

zf{motion} 或 {Visual}zf 运算符来创建折叠。 这仅在 'foldmethod' 为 "manual" 或 "marker" 时有效。新折叠将针对“手动”方法关闭。

你可以检查你的foldmethod以确认:set foldmethod?

每当您处于具有相同缩进的一系列行中时,您只需单击即可za折叠该块。

如果您想手动创建折叠,您需要将这次设置foldmethodmanual

将光标放在其中一个大括号上,然后键入zf%将折叠 {} 之间的所有块