如何设置默认展开时打开一个文件?

在我的 .vimrc中,我把 set foldmethod=syntax放到了方法的折叠中。然而,我不喜欢默认的,每次我打开一个文件,整个事情是折叠。有没有一种方法可以启用 foldmethod,当我打开它们的时候,文件已经展开了?

23514 次浏览

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

nmap ,f :set foldmethod=syntax<CR>

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

set foldlevel=99

应打开所有折叠,无论使用的方法进行折叠。随着 foldlevel=0全部折叠,foldlevel=1只有一些,... ... 较高的数字将关闭较少的折叠。

你可以把这个放进你的 .vimrc: au BufRead * normal zR

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

.vimrc中,为 BufWinEnter添加一个 autocmd 来自动打开所有折叠,如下所示:

autocmd BufWinEnter * silent! :%foldopen!

它告诉 vim 在打开 BunWinEnter事件后执行 silent :%foldopen!(参见 :h BufWinEnter)。由于 %silent %foldopen!将在整个缓冲区上执行 BunWinEnter0,并且由于 !,将递归地打开所有折叠。任何最终的错误消息都将被 BunWinEnter1抑制。(如果缓冲区实际上还没有包含任何折叠,您可能会得到像 E490: No fold found这样的错误消息)

注意: 您可以使用 BufRead而不是 BufWinEnter,但是如果文件具有一个允许折叠的 model,那么它将覆盖这个 autocmd。我的意思是 BufRead autocmds 运行之前的模式是处理和 BufWinEnter将运行他们之后。我觉得后者更有用

你可以加

set foldlevelstart=99

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

如果你想让它一打开就展开,你可以使用 set foldlevelstart=99作为许多答案的解释。

但是,如果你只是想看到它们展开,你只需按下 zi,它就会展开一切。另外,zi会关闭它们。

set nofoldenable

将此添加到您的 .vimrc将暂时禁用折叠时,您打开的文件,但折叠仍然可以恢复与 zc

当您将 set nofoldenable放入.vimrc 文件时,您可以打开未折叠的文件。

autocmd BufReadPost * silent! :%foldopen!

这对我来说效果最好。缓冲区打开后,所有的折叠都打开了。这将把它们打开到正确的级别。

set foldenable的方法不好,因为如果我选择关闭一个折叠水平,它再次启用折叠,并折叠每件事物到0水平,而不是只下降一个水平的一个我激活。