为什么创建新折叠有时会导致整个文件被折叠?

Why does creating a new fold sometimes cause the entire file to be folded?

有时,当我在 vim 中创建新折叠时,它会折叠整个文件。为什么?
(foldmethod=manual)

例如,

  1. zi(所有折叠现已打开)
  2. zi(所有折叠现已关闭)
  3. 第 1-309 行折叠关闭,第 617-662 行折叠关闭(文件有 662 行)
  4. 我的光标在第377行
  5. zfG 折叠从第 377 行到文件末尾的所有行
    预期:第 377 行到文件末尾已关闭,第 310-366 行可见
    实际: 文件中的所有行都已关闭

解决方法:

  1. zD(删除所有折叠)
  2. :1,309fold(折叠1-309)
  3. :377,$fold(折叠 377-eof)

我的弃牌*设置:

  foldclose=
  foldcolumn=0
  foldenable
  foldexpr=0
  foldignore=#
  foldlevel=0
  foldlevelstart=-1
  foldmarker={{{,}}}
  foldmethod=manual
  foldminlines=1
  foldnestmax=20
  foldopen=block,hor,mark,percent,quickfix,tag,undo
  foldtext=foldtext()

这是因为第 377 行(我在其中创建新折叠)位于现有的 open 折叠中,该折叠从文件的第 1 行开始。所以当我创建新的折叠时,它增加了现有打开的折叠的大小并关闭它,导致整个文件被折叠关闭。

要对此进行调试,:set foldcolumn=12 显示打开的折叠。 zM 关闭所有打开的折叠。

另请注意,我认为 zi 切换 open/closed 所有折叠,但事实并非如此。 zM 关闭所有折叠,zR 打开所有折叠。

[我从this vi.stackexchange.com question]

那里得到了答案