首先,我使用 set foldmethod=marker,并将光标移动到一个函数的 {,使用 zf% 折叠当前函数。但是这个文件中有很多功能。如何折叠此文件中的所有功能?而且我不想在函数中折叠 {}。
6 回答
如果您:set foldmethod=syntax
将从语法定义中指定折叠。如果您愿意,可以:set foldmethod=indent
让缩进定义折叠。
您可以使用 关闭所有折叠zM
。如果您有嵌套折叠并且想要逐级折叠,请使用zm
. 要打开折叠,请使用zR
(all) 和zr
(逐层)。
如果每个函数在第一列都有它的左大括号,你可以这样做:
:%g/^{/normal! zf%
也许这样更清楚:
:%g /^{/ normal! zf%
该g
命令根据以下模式选择行,并执行 ex 命令(此处normal!
用于播放普通模式击键)。
见:help :g
和:help :normal
我在寻找类似的东西时遇到了这个问题。你现在显然已经知道了,但为了其他人的利益,我还是会回答它。
您需要在 .vimrc 中加入以下行:
set foldmethod=syntax
set foldnestmax=1
set foldlevel=0
将从一开始就折叠所有东西,要折叠的是什么。根据语言和您的折叠功能,折叠的内容会有所不同。
我试图做同样的事情,最后只是做了:
setlocal foldmethod=marker
setlocal foldmarker={,}
它使用标记折叠方法并将标记更改为单个花括号(默认情况下标记为{{{
)。
尝试:%g/\(function\_.\{-}\)\@<={/ normal! f{zf%
一点一点解释:
:%g
- 在整个文件中全局搜索
/\(function\_.\{-}\)\@<={/
- 在任何“函数”之后查找第一个“{”并将光标放在带有“{”的字符串开头的模式
normal! f{zf%
- 向前执行到 '{'并在该字符串上f{
移动 '%' 进行折叠zf%