当给出无与伦比的开括号/括号时,vim折叠打开

r.v*_*r.v 13 vim folding

我经常遇到这样的情况:我有很多折叠的线条,我正在写这些代码,在这些折叠之上.一旦我输入'{',下面的所有折叠打开.即使vim这样做是合法的,但再次关闭所有折叠也是令人恼火的.这种情况有办法解决吗?

eck*_*kes 19

我有同样的问题,可以使用这个vimtip解决它.

提示描述的摘录很少:

如果您使用任何类型的自动折叠方法,无论是标记,语法还是表达式折叠,插入开始折叠的文本将自动打开插入点下方的所有折叠.这可能非常烦人.为了解决这个问题,您可以在进入插入模式时暂时切换到手动折叠方法,并在离开时切换回来.

关键是要设置foldmethodmanual编辑开始时:

autocmd InsertEnter * if !exists('w:last_fdm') | let w:last_fdm=&foldmethod | setlocal foldmethod=manual | endif
Run Code Online (Sandbox Code Playgroud)

完成编辑后,重置foldmethod为原始值:

autocmd InsertLeave,WinLeave * if exists('w:last_fdm') | let &l:foldmethod=w:last_fdm | unlet w:last_fdm | endif
Run Code Online (Sandbox Code Playgroud)