74

在我的文件中,.vimrc我已经set foldmethod=syntax启用了方法等的折叠。但是,我不喜欢每次打开文件时都会折叠整个文件的默认设置。有没有办法启用foldmethod,但是当我打开文件时它们展开了?

4

8 回答 8

67

你可以把它放在你的.vimrcau BufRead * normal zR

它声明了一个自动命令(au),在读取缓冲区时触发(BufRead),匹配所有文件(*)并在正常模式下执行zR(打开所有折叠)命令。

于 2011-11-29T19:50:52.440 回答
66
set foldlevel=99

应该打开所有折叠,无论使用何种折叠方法。foldlevel=0全部折叠后,foldlevel=1只有一些,...更多的数字将关闭更少的折叠。

于 2011-11-29T19:22:10.187 回答
26
set nofoldenable

当您打开文件时,将其添加到您的遗嘱中.vimrc会暂时禁用折叠,但仍然可以使用zc

于 2016-05-31T10:19:11.750 回答
11

.vimrc添加一个 autocmdBufWinEnter以自动打开所有折叠,如下所示:

autocmd BufWinEnter * silent! :%foldopen!

这告诉 vim 执行silent :%foldopen!打开后BunWinEnter事件(请参阅 参考资料:h BufWinEnter)。由于 ,将在整个缓冲区上silent %foldopen!执行,并且由于 . 将递归打开所有折叠。任何最终的错误消息都将被. (如果缓冲区实际上还没有包含任何折叠,您可能会收到错误消息)foldopen%!silentE490: No fold found

注意:如果文件具有启用将覆盖此 autocmd 的折叠的模式行,则可以使用BufRead 而不是。BufWinEnter我的意思是BufReadautocmds 在处理模式行之前BufWinEnter运行并在之后运行它们。我发现后者更有用

于 2014-05-15T07:58:05.847 回答
7

你可以加

set foldlevelstart=99

到您的 .vimrc 文件,它将开始编辑所有折叠打开的任何新文件。

于 2014-09-28T08:15:22.190 回答
4

如果您想要一种方法让它在打开后立即展开,您可以使用set foldlevelstart=99许多答案解释。

但是,如果您只想看到它们展开,您只需按下zi它就会展开所有内容。另一个,zi将关闭它们。

于 2015-12-17T12:12:25.940 回答
0

您可以将其映射到键以启用它。例如,

nmap ,f :set foldmethod=syntax<CR>

然后在正常模式下按“,f”组合键

于 2011-11-29T19:21:25.870 回答
0

当您放入set nofoldenable.vimrc 文件时,您可以打开展开的文件。

于 2020-07-13T03:12:43.777 回答