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


116
  1. 当我打开文件时,它看起来像这样: 在此处输入图片说明 甚至这样 在此处输入图片说明
  2. 当我打开所有折叠时,当我导航到另一个缓冲区并返回时,它们将再次关闭。
  3. 为了能够使用它,我zR每次打开缓冲区时都必须应用。

我在以下位置设置了这些.vimrc

set foldlevelstart=99
set foldlevel=99

请指出如何禁用折叠功能,或者至少要导航到另一个缓冲区以不关闭打开的缓冲区。


2
第一次启动vim时,运行:set foldlevel:set foldlevelstart查看它们的设置。我的初步猜测是,这些值正在某个地方重置。当我将这些值添加到vimrc时,一切都会按预期进行。
cledoux

Answers:


209

你不是一个人。

set nofoldenable    " disable folding

7
请注意,这不会影响vimdiff。当vim创建一个diff窗口时,它似乎会覆盖该foldenable选项。我发现的唯一解决方法是将contextsub-option设置diffopt为非常大的值。例如:set diffopt+=context:99999
劳伦斯·贡萨尔维斯

14
这是vim-markdown。要通过vim-markdown禁用折叠,请使用let g:vim_markdown_folding_disabled=1
BenjaminGolder


2
我更喜欢下面的glts'解决方案:使用'zi'切换可折叠状态。关于vim的几个大问题之一是要记住的事情之多。像'zi'而不是'foldenable'这样的小东西都是上帝送的!
蒂埃里(Thierry)

1
似乎对我不起作用:( python代码仍然折叠
。– weima

55

即时停用(并启用)折叠功能的最简单方法是zi

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

助记符:“ fold i nvert”。请参阅:h zi


44

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


@Magnus:这样做是vimdiff为了避免显示很多相同的行。用例不同,因此不受的影响nofoldenablezR打开所有折叠;我不知道禁用折叠的设置vimdiff。(因为它是折叠不会困扰我的地方。)
DevSolar 2014年

16

这是一篇文章,简明扼要地总结了为什么折叠很酷。一行原因是折叠使导航大文件变得轻而易举。

如果您想使折叠保持启用状态,而只是始终在所有折叠打开的情况下开始,vim Wiki会告诉您如何操作。 您感兴趣的方法可能是自动命令方法。

" 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

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

autocmd FileType * exe "normal zR"

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


3

只需添加一个,即可使其完整地讨论。

要启用代码折叠:

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

要禁用代码折叠:

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

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


1

抱歉,如果我正在回答相关问题,但是我发现在显示两个文件的同时关闭折叠功能非常有用,例如:

vim "+set nofen" -O file1 file2

1

Vim很难禁用折叠,特别是在使用vimdiff时。
以上发布的解决方案均不适用于我,但这确实可行(添加到〜/ .vimrc):

au WinEnter * set nofen
au WinLeave * set nofen

1

我定了foldlevel=20foldlevelstart=20我用foldmethod=syntax。这有助于我正确地在vim中进行折叠。

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

vim.wikia

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.