71

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

4

6 回答 6

128

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

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

于 2010-12-30T02:41:59.583 回答
11

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

:%g/^{/normal! zf%

也许这样更清楚:

:%g /^{/ normal! zf%

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

:help :g:help :normal

于 2010-12-30T10:16:36.643 回答
9

我在寻找类似的东西时遇到了这个问题。你现在显然已经知道了,但为了其他人的利益,我还是会回答它。

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

set foldmethod=syntax
set foldnestmax=1
于 2012-02-05T00:30:46.050 回答
8
set foldlevel=0

将从一开始就折叠所有东西,要折叠的是什么。根据语言和您的折叠功能,折叠的内容会有所不同。

于 2012-02-05T03:11:37.543 回答
8

我试图做同样的事情,最后只是做了:

setlocal foldmethod=marker
setlocal foldmarker={,}

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

于 2016-09-13T20:49:16.813 回答
3

尝试:%g/\(function\_.\{-}\)\@<={/ normal! f{zf%

一点一点解释:

:%g- 在整个文件中全局搜索

/\(function\_.\{-}\)\@<={/- 在任何“函数”之后查找第一个“{”并将光标放在带有“{”的字符串开头的模式

normal! f{zf%- 向前执行到 '{'并在该字符串上f{移动 '%' 进行折叠zf%

于 2014-11-18T11:14:42.137 回答