如何使用vim自动折叠文件中的所有函数?

Yon*_*ing 51 vim folding

首先,我使用set foldmethod = marker,并将光标移动到{of one function,使用zf%折叠当前函数.但是这个文件中有很多功能.如何折叠此文件中的所有功能?而且我不想在函数中折叠{}.

R. *_*des 101

如果您:set foldmethod=syntax将从语法定义中指定折叠.如果您愿意,可以:set foldmethod=indent让缩进定义折叠.

您可以关闭所有折叠zM.如果您有嵌套折叠并且想要逐级折叠,请使用zm.要打开折叠使用zR(全部)和zr(逐级).

  • 它说"找不到折叠" (3认同)
  • 设置foldmethod = syntax后,zR和zm不起作用 (2认同)
  • 对于那些想知道如何记住`zm`和`zr`的人,[官方文档](http://vimdoc.sourceforge.net/htmldoc/fold.html)说它是“更多”和“减少”。(仍然不是很直观,但是就像vim世界中的大多数事情一样,它就是它。) (2认同)
  • 仅供参考,在他们的文档中,他们提到所有折叠命令都以'z'开头.如果从侧面看,它看起来像折叠纸. (2认同)

Ben*_*oit 8

如果每个函数在第一列上都有它的左括号,你可以这样做:

:%g/^{/normal! zf%
Run Code Online (Sandbox Code Playgroud)

也许这种方式更清楚:

:%g /^{/ normal! zf%
Run Code Online (Sandbox Code Playgroud)

g命令根据以下模式选择行,并执行ex命令(此处normal!播放普通模式击键).

:help :g:help :normal


小智 7

当我在寻找类似的东西时,我遇到了这个.你现在显然已经想到了这一点,但为了其他人的利益,无论如何我都会回答它.

您需要在.vimrc中添加以下行:

set foldmethod=syntax
set foldnestmax=1
Run Code Online (Sandbox Code Playgroud)


Roo*_*ook 5

set foldlevel=0
Run Code Online (Sandbox Code Playgroud)

将从一开始折叠所有东西,折叠的东西.根据语言和折叠功能,折叠的内容会有所不同.

  • zM做同样的事情。 (4认同)

mrt*_*mgs 5

我试图做同样的事情,结果只是简单地做:

setlocal foldmethod=marker
setlocal foldmarker={,}
Run Code Online (Sandbox Code Playgroud)

它使用标记折叠方法并将标记更改为单个花括号(默认情况下标记为{{{)。