首先,我使用 set foldmethod = mark,并将光标移动到一个函数的{ ,使用 zf% 来折叠当前函数。但是这个文件中有很多函数。如何折叠该文件中的所有函数?我不想在函数中折叠{}。
如果您的 :set foldmethod=syntax折叠将从语法定义中指定。如果你喜欢你可以 :set foldmethod=indent有压痕定义的折叠。
:set foldmethod=syntax
:set foldmethod=indent
你可以用 zM关闭所有的折叠。如果你有嵌套的折叠,你想折叠一级一级,使用 zm。打开折叠使用 zR(所有)和 zr(水平逐级)。
zM
zm
zR
zr
如果每个函数的第一列都有一个大括号,你可以这样做:
:%g/^{/normal! zf%
也许这样更清楚:
:%g /^{/ normal! zf%
g命令根据以下模式选择行,并执行 ex 命令(在这里 normal!播放正常模式的击键)。
g
normal!
参见 :help :g和 :help :normal
:help :g
:help :normal
我在找类似的东西时发现了这个。你现在肯定已经知道了,不过为了其他人着想,我还是会回答的。
您需要在.vimrc 中输入以下代码行:
set foldmethod=syntax set foldnestmax=1
set foldlevel=0
将折叠一切从开始,什么是精神被折叠。根据不同的语言和你的折叠功能,折叠的内容会有所不同。
试试 :%g/\(function\_.\{-}\)\@<={/ normal! f{zf%
:%g/\(function\_.\{-}\)\@<={/ normal! f{zf%
一点一点地解释:
:%g-在整个文件中进行全局搜索
:%g
/\(function\_.\{-}\)\@<={/-模式在任何“函数”之后首先找到“{”,并将光标放在以“{”开头的字符串上
/\(function\_.\{-}\)\@<={/
向前执行到“{”f{,并在该字符串上使用 move’%’zf%折叠
f{
zf%
我也想做同样的事情,结果只是做了:
setlocal foldmethod=marker setlocal foldmarker={,}
它使用标记折叠方法并将标记更改为单个花括号(默认情况下,标记是 \{\{{)。
\{\{{