2011-01-07 14 views
12

我经常遇到这样的情况:我有很多折叠的行,并且正在写这些折叠上方的新代码块。只要我输入一个'{',下面的所有折叠都会打开。尽管vim做到这一点是合法的,但是再次关闭所有折叠令人恼火。有没有办法解决这种情况?当给出无与伦比的大括号/圆括号时,vim折叠打开了

+0

我可以” t用默认的vim安装和一个简单的Java文件来重现这个问题... – krakover 2011-01-08 11:09:58

+0

我也无法重现这一点。好奇,你有'showmatch`打开吗?这个设置是否会影响行为? – 2011-01-08 16:42:34

回答

18

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

尖端描述的小摘录:

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

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

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