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

如何使用vim自动折叠文件中的所有函数?,vim,folding,Vim,Folding,首先,我使用set foldmethod=marker,将光标移动到{of one function,使用zf%折叠当前函数。但是这个文件中有很多函数。如何折叠这个文件中的所有函数?我不想折叠{}在函数中。如果:set foldmethod=syntax将从语法定义中指定折叠。如果愿意,可以:set foldmethod=indent让缩进定义折叠 您可以使用zM关闭所有折叠。如果您有嵌套的折叠,并且希望逐级折叠,请使用zM。要打开折叠,请使用zR(全部)和zR(逐级)。如果每个函数的第一列上都

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

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


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

如果每个函数的第一列上都有一个大括号,则可以执行以下操作:

:%g/^{/normal! zf%
也许这样更清楚:

:%g /^{/ normal! zf%
g
命令根据以下模式选择行,并执行ex命令(此处
normal!
播放正常模式按键)


请参见
:help:g
:help:normal

我在搜索类似内容时遇到了这个问题。你现在显然已经明白了这一点,但为了其他人的利益,我无论如何都会回答这个问题

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

set foldmethod=syntax
set foldnestmax=1

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

尝试
:%g/\(function\\\.{-}\)\@我也尝试过这样做,但最终只是做了:

setlocal foldmethod=marker
setlocal foldmarker={,}

它使用marker fold方法并将标记更改为单个大括号(默认标记为
{{{
)。

FYI vim发行版通常附带嵌入式帮助。如果键入
:help fold
,您可以看到所有与折叠相关的内容。您必须添加您感兴趣的语言(并非所有语言都有{}首先!);在Vim中折叠是一个自己的话题。我想你误解了我的意思。首先,我需要为每个函数设置折叠。我只想知道如何在第一时间为所有函数设置折叠。@Yongwei:好的,我想我现在明白了。这是你想要的吗?上面写着“找不到折叠”对于那些想知道如何记住
zm
zr
的人来说,他们说这是“更多”和“减少”。(仍然不是很直观,但就像vim世界中的大多数东西一样,这就是它。)仅供参考,在他们的文档中,他们提到所有的折叠命令都以“z”开头。如果从侧面看,看起来像是折叠的纸。无法使comand正常工作-可能显示示例函数show我可以包括下一个(空)函数后面的行?我使用这个-谢谢,但是你怎么能避免它在函数之间折叠呢?似乎不仅仅是函数我喜欢它,非常方便!但是我应该拆分行,关闭一个大括号,打开另一个大括号(如“}else{”)
zM
做同样的事情。
setlocal foldmethod=marker
setlocal foldmarker={,}