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

137
  1. 打开文件时看起来像这样: enter image description here 或者甚至是这个 enter image description here
  2. 当我展开所有折叠后,在导航到另一个缓冲区并返回后,它们又被关闭了。
  3. 为了能够使用它,每次打开缓冲区时都必须应用zR

我在.vimrc中设置了这些内容:

set foldlevelstart=99
set foldlevel=99
请指导我如何禁用折叠功能,或者至少使导航到另一个缓冲区时不关闭已打开的缓冲区。

3
当初开始使用vim时,运行:set foldlevel:set foldlevelstart 命令以查看它们的设置。我最初的猜测是这些值在某处被重置了。当我将这些值添加到我的vimrc中时,一切都按预期工作。 - cledoux
9个回答

249

你并不孤单。

set nofoldenable    " disable folding

13
请注意,这不会影响vimdiff。当vim创建差异窗口时,它似乎会覆盖“foldenable”选项。我找到的唯一解决方法是将diffoptcontext子选项设置为非常大的值。例如:set diffopt+=context:99999 - Laurence Gonsalves
17
这是vim-markdown的内容。要禁用vim-markdown的折叠功能,请使用let g:vim_markdown_folding_disabled=1 - BenjaminGolder
3
我更喜欢下面 glts 的解决方案:使用“zi”来切换折叠功能。Vim 的一个很大的问题是需要记住的东西太多了。像使用“zi”代替“foldenable”这样的小技巧真是太好用了! - Mugabo
1
似乎对我不起作用 :( Python 代码仍然折叠。 - weima
1
vim-awesome的原始版本也折叠了所有内容,BenjaminGolder的建议解决了这个问题 let g:vim_markdown_folding_disabled=1 - slm
显示剩余3条评论

66

在编程中,最简单的禁用(和启用)折叠的方法是使用zi

zi是正常模式下的命令,切换'foldenable',就像:set foldenable!一样。

助记符:"折叠反转"。请参见:h zi


z -> fold的助记符是“z看起来像是折叠的” - undefined

46

set nofoldenable 添加到您的 ~/.vimrc 文件中以禁用折叠功能。


@Magnus:这是“vimdiff”故意做的,以避免显示大量相同的行。使用情况不同,因此不受“nofoldenable”的影响。“zR”打开所有折叠;我不知道有什么设置可以禁用“vimdiff”中的折叠。(因为这是唯一一个折叠不会打扰我的地方。) - DevSolar

16

这篇文章简洁地解释了为什么折叠很棒。最重要的原因是,折叠能让你轻松浏览非常大的文件。

如果你想保留折叠功能,并且始终以所有折叠打开的方式打开文件,vim维基提供了相应的方法。对你最有用的方法可能是自动命令方法。

" 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 <插入语言名称> 折叠"即可找到多种选项。尝试不同的选项,直到找到喜欢的折叠方法。


5
我已经将以下这行代码添加到我的.vimrc文件中,因为我也遇到了同样的问题: autocmd FileType * exe "normal zR" 每次打开文件时,此命令会自动执行。这样你就不会看到这个错误,而且折叠功能也不会丢失。

3

Vim让禁用折叠变得非常困难,特别是在使用vimdiff时。
以上发布的解决方案都不适用于我,但这个可以(添加到~/.vimrc文件中):

au WinEnter * set nofen
au WinLeave * set nofen

我刚刚测试了一下,它可以工作,但前提是你也要有set nofoldenable。真是奇怪。 - TamaMcGlinn
糟糕,我说得太早了。在使用:diffobtain命令后,文件的Git索引仍然会折叠。 - TamaMcGlinn

3
只需再添加一个完整到讨论点的内容。
要启用代码折叠:
:set foldenable 或简写为 :set fen
要禁用代码折叠:
:set nofoldenable 或简写为 :set nofen
一旦启用代码折叠,您将根据 :set fdm=xxxx 的设置(其中典型值为 expr、syntax、manual 等)拥有所有命令,如 zf、zo 等。

1
我将foldlevel=20foldlevelstart=20设置为默认值,并使用foldmethod=syntax,这有助于我在vim中正确折叠代码。 set nofoldenable可以禁用折叠,但有时我需要它。

vim.wikia


1
抱歉,如果我回答的问题与此相关,但我发现使用以下类似方式可以同时显示两个文件且折叠关闭:

vim "+set nofen" -O file1 file2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接