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

时间:2010-12-30 02:33:27

标签: vim folding

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

6 个答案:

答案 0 :(得分:95)

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

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

答案 1 :(得分:8)

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

:%g/^{/normal! zf%

也许这种方式更清晰:

:%g /^{/ normal! zf%

g命令根据以下模式选择行,并执行ex命令(此处为normal!以播放正常模式击键)。

请参阅:help :g:help :normal

答案 2 :(得分:7)

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

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

set foldmethod=syntax
set foldnestmax=1

答案 3 :(得分:5)

set foldlevel=0

将从一开始折叠所有内容,折叠意味着什么。根据语言和折叠功能,折叠的内容会有所不同。

答案 4 :(得分:4)

我试图做同样的事情,结果只是做了:

setlocal foldmethod=marker
setlocal foldmarker={,}

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

答案 5 :(得分:1)

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

一点一点解释:

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

/\(function\_.\{-}\)\@<={/ - 在任何'函数'之后找到第一个'{'的模式,并将光标放在带有'{'

的字符串的开头

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