关于 vim 折叠的困惑 - 如何禁用?

Posted

技术标签:

【中文标题】关于 vim 折叠的困惑 - 如何禁用?【英文标题】:Confusion about vim folding - how to disable? 【发布时间】:2011-06-28 08:52:34 【问题描述】:
    当我打开文件时,它看起来像这样: 甚至这个 当我打开所有折叠时,当我导航到另一个缓冲区并返回时,它们会再次关闭。 为了能够使用它,我每次打开缓冲区时都必须申请zR

我在.vimrc

set foldlevelstart=99
set foldlevel=99

请告诉我如何禁用折叠,或者至少导航到另一个缓冲区而不是关闭打开的缓冲区。

【问题讨论】:

第一次启动 vim 时,运行 :set foldlevel:set foldlevelstart 以查看它们的设置。我最初的猜测是这些值在某处被重置。当我将这些值添加到我的 vimrc 时,一切都按预期工作。 【参考方案1】:

set nofoldenable 添加到您的 ~/.vimrc 以禁用折叠。

【讨论】:

@Magnus:vimdiff 故意这样做是为了避免显示很多相同的行。用例不同,因此不受nofoldenable 的影响。 zR 打开所有折叠;我不知道在vimdiff 中禁用折叠的设置。 (因为这是折叠不会打扰我的一个地方。)【参考方案2】:

你并不孤单。

set nofoldenable    " disable folding

【讨论】:

请注意,这不会影响 vimdiff。当 vim 创建一个差异窗口时,它似乎覆盖了 foldenable 选项。我发现的唯一解决方法是将diffoptcontext 子选项设置为非常大的值。例如:set diffopt+=context:99999 它是vim-markdown。要通过 vim-markdown 禁用折叠,请使用 let g:vim_markdown_folding_disabled=1 @BenjaminGolder 我们已将其修复为:github.com/plasticboy/vim-markdown/pull/131 我更喜欢下面的 glts 解决方案:使用 'zi' 切换可折叠。 vim 的少数几个大问题之一是要记住的事情太多了。像 'zi' 而不是 'foldenable' 这样的小东西是天赐良机! 似乎对我不起作用:(python代码仍然折叠。【参考方案3】:

Here is an article 简明扼要地总结了为什么折叠很酷。一个原因是折叠使导航非常大的文件变得轻而易举。

如果您想启用折叠,并且总是从所有折叠打开开始,vim wiki tells how. 您感兴趣的方法可能是自动命令方法。

" Tweak the event and filetypes matched to your liking. 
" Note, perl automatically sets foldmethod in the syntax file
autocmd Syntax c,cpp,vim,xml,html,xhtml setlocal foldmethod=syntax
autocmd Syntax c,cpp,vim,xml,html,xhtml,perl normal zR

我还建议为您使用的语言搜索自定义折叠方法。简单地谷歌搜索“vim 折叠”应该会带来许多选项。尝试不同的选项,直到找到您喜欢的折叠方法。

【讨论】:

【参考方案4】:

只需再添加一个即可完成讨论。

启用代码折叠:

:set foldenable 或简而言之,:set fen

禁用代码折叠:

:set nofoldenable 或简而言之,:set nofen

启用代码折叠后,您将根据:set fdm=xxxx 的设置随意使用zf,zo etc 等所有命令,其中典型值为expr,syntax,manual etc.

【讨论】:

【参考方案5】:

动态禁用(和启用)折叠的最简单方法是zi

zi 是切换'foldenable' 的普通模式命令,就像:set foldenable!

助记符:“折叠invert”。见:h zi

【讨论】:

【参考方案6】:

抱歉,如果我在回答相关问题,但我发现在关闭折叠的同时显示两个文件很有用,如下所示:

vim "+set nofen" -O file1 file2

【讨论】:

【参考方案7】:

Vim 让禁用折叠变得异常困难,尤其是在使用 vimdiff 时。 以上发布的解决方案都不适合我,但这确实(添加到 ~/.vimrc):

au WinEnter * set nofen
au WinLeave * set nofen

【讨论】:

我刚刚测试过它并且它有效,但前提是你也有set nofoldenable。奇怪。 糟糕。我说得太早了。在文件的 git 索引中使用 :diffobtain 后它仍然会折叠【参考方案8】:

我设置了foldlevel=20foldlevelstart=20,我使用了foldmethod=syntax。 它帮助我在 vim 中正确折叠。

set nofoldenable 禁用折叠,但有时我需要它

vim.wikia

【讨论】:

【参考方案9】:

我已将此行添加到我的 .vimrc 文件中,因为我遇到了同样的问题:

autocmd FileType * exe "normal zR"

每次打开文件时都会自动执行此命令。所以你不会看到错误,折叠功能也不会丢失)

【讨论】:

以上是关于关于 vim 折叠的困惑 - 如何禁用?的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用vim粘贴到/从系统剪贴板?

滚动没有内容时如何禁用 CollapsingToolbar 的折叠?

折叠可见性时如何禁用对组合框元素的验证?

如何在双击时禁用WPF TreeView中树项的展开/折叠

禁用 (GitGutter) 关于提交 Sublime Text 的消息

如何禁用 Vim 铃声?