关于 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
选项。我发现的唯一解决方法是将diffopt
的context
子选项设置为非常大的值。例如: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=20
,foldlevelstart=20
,我使用了foldmethod=syntax
。
它帮助我在 vim 中正确折叠。
set nofoldenable
禁用折叠,但有时我需要它
vim.wikia
【讨论】:
【参考方案9】:我已将此行添加到我的 .vimrc
文件中,因为我遇到了同样的问题:
autocmd FileType * exe "normal zR"
每次打开文件时都会自动执行此命令。所以你不会看到错误,折叠功能也不会丢失)
【讨论】:
以上是关于关于 vim 折叠的困惑 - 如何禁用?的主要内容,如果未能解决你的问题,请参考以下文章
滚动没有内容时如何禁用 CollapsingToolbar 的折叠?