vim不会在第一次折叠时折叠所有内容

时间:2017-03-29 22:34:27

标签: vim

当我关闭缓冲区中的第一个折叠(正常模式下为zc)时,所有折叠都会自动关闭。有没有办法只关闭给定的折叠而不关闭其余的折叠?

我有foldmethod=syntax。用python观察,但这可能适用于其他语言。

示例python文件

enter image description here

方法a()

上的

zc

enter image description here

如您所见,所有方法:abc都已折叠。所需行为仅适用于折叠方法a,如下所示:

enter image description here

这仅在第一次在缓冲区中关闭折叠时发生。重新打开所有折叠后,zc只会关闭正确的折叠。

编辑:我认为这与SimpylFold插件有关。我默认设置了nofoldenable。当我zc时,它看起来像SimpylFold设置foldenable,它会自动折叠所有方法。

1 个答案:

答案 0 :(得分:1)

原因是与nofoldenable和插件SimpylFold的奇怪互动。我默认设置nofoldenable。如果您有foldenable,除非您添加其他命令,否则默认情况下您的所有折叠都会关闭。

现在使用SimpylFold插件时,zc首次使用时也会设置foldenable,这将关闭所有折叠。

解决方案是在~/.vimrc

中添加类似内容
autocmd FileType python setlocal foldenable foldlevel=20

这样可以在本地折叠python文件,同时在打开缓冲区时打开折叠。然后zc表现正常。