首先,我使用set foldmethod = marker,并将光标移动到{of one function,使用zf%折叠当前函数。但是这个文件中有很多功能。如何折叠此文件中的所有功能?而且我不想在函数中折叠{}。
答案 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%
进行弃牌