答案1
默认折叠
Vim 的默认折叠方法是manual
手动创建折叠;否则,无法使用 、 或 来关闭或打开折叠,za如zo您所述。但是,您可以通过inzc创建折叠zf{motion}
普通的模式或zf在视觉的模式;例如,zfj为当前行和下一行创建折叠普通的模式。
折叠依据indent
@Anthon 接受的答案描述了如何将折叠方法设置为indent
;即折叠由压痕的级别来定义。
折叠依据syntax
更方便的方式是,可以根据当前缓冲区的语言语法自动创建折叠。如果您使用的是编程语言,我们称其为L,并且你有折叠定义L(例如你安装了一个Vim插件,其中的折叠信息L被定义为;例如vim对于 C/C++,或者python模式对于Python),您只需将折叠方法设置为syntax
:
set foldmethod=syntax
就是这样。处理折叠最有用的命令是:
- zo在光标处打开折叠。
- zShift+o打开光标处的所有折叠。
- zc关闭光标处的折叠。
- zm将 增加
foldlevel
一。 - zShift+m关闭所有打开的折叠。
- zr将 减
foldlevel
一。 - zShift+r将 减至
foldlevel
零——所有折叠都将打开。
答案2
不,您不必将链接到的页面中的命令放入您的 中~/.vimrc
,您只需在发出命令后键入它们:
即可vim
获取命令提示符。
但是,如果您输入以下行:
set foldmethod=indent
set foldnestmax=10
set nofoldenable
set foldlevel=2
如您提供的链接中所示,在您的 中~/.vimrc
,您不必每次想要在文件中使用折叠时都键入它们。确保set nofoldenable
打开时文件“正常”,即未折叠。
答案3
您不必系统地使用它:我通常通过动作或部分手动选择折叠。例如,折叠一个段落是zfip
,折叠接下来的 20 行是zf20j
。用于za
切换和zd
删除。
这需要更多的工作,但可以让你的折叠反映手头的任务。
答案4
如果有人想更改默认折叠方法并在新文件打开时停止自动折叠,请在下面的 vim 配置文件中添加此代码:
setlocal foldmethod=syntax
setlocal foldlevelstart=99
setlocal foldmethod
是更改默认Manual
折叠方式并foldlevelstart
在文件打开时停止自动折叠。您可以更改该值以自定义自动折叠级别。检查此处的文档:https://neovim.io/doc/user/options.html#'foldlevelstart'