14

我经常遇到这样的情况,我有很多行折叠并且我正在编写,比如说一个新的代码块,在这些折叠之上。只要我输入一个'{',下面的所有折叠都会打开。尽管 vim 这样做是合法的,但再次关闭所有折叠是令人恼火的。有没有办法解决这种情况?

4

1 回答 1

21

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

提示描述的一小部分摘录:

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

诀窍是在编辑开始时设置foldmethod为:manual

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

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

autocmd InsertLeave,WinLeave * if exists('w:last_fdm') | let &l:foldmethod=w:last_fdm | unlet w:last_fdm | endif
于 2011-01-11T06:33:02.750 回答