如何在 Vim 中启用和使用代码折叠?

Moh*_*ani 69 vim

如何在 Vim 中启用和执行代码折叠?

我必须改变什么~/.vimrc吗?

我输入z+az+cz+o没有任何反应。

这是一篇关于折叠的文章:Vim 中的代码折叠

car*_*ist 68

默认折叠

Vim 的默认折叠方法manual意味着折叠是手动创建的;否则,没有折叠到关闭或打开使用zazozc作为你说明。但是,你可以通过创建一个折叠zf{motion}普通模式或zf可视模式; 例如,zfj正常模式下为当前行和下一行创建一个折叠。

折叠 indent

@Anthon 接受的答案描述了如何将折叠方法设置为indent;即折叠由缩进的级别定义。

折叠 syntax

更方便的是,可以根据当前缓冲区的语言语法自动创建折叠。如果使用的是一种编程语言,让我们称之为大号,并且已折叠的定义大号(例如已安装Vim插件,其中的折叠信息的大号定义;如c.vim为C / C ++,或蟒-mode for Python),您只需要将折叠方法设置为syntax

set foldmethod=syntax
Run Code Online (Sandbox Code Playgroud)

就是这样。处理折叠最有用的命令是:

  • zo 在光标处打开一个折叠。
  • zShift+o打开光标处的所有折叠。
  • zc 在光标处关闭折叠。
  • zm增加foldlevel一。
  • zShift+m关闭所有打开的折叠。
  • zrfoldlevel一。
  • zShift+r减少foldlevel到零 - 所有折叠都将打开。


Ant*_*hon 59

不,你不必从你链接到你的页面放命令~/.vimrc,你可以只发出后键入他们:vim得到命令提示符。

但是,如果你把这些行:

set foldmethod=indent   
set foldnestmax=10
set nofoldenable
set foldlevel=2
Run Code Online (Sandbox Code Playgroud)

如您提供的链接所示,在您的~/.vimrc, 您不必每次要在文件中使用折叠时都输入它们。在set nofoldenable确保了当打开,文件是“正常的”,即不折叠。


小智 17

您不必系统地使用它:我通常按动作或部分手动选择折叠。例如,折叠一个段落是zfip,折叠接下来的 20 行是zf20j。使用za切换和zd清除。

这需要更多的工作,但可以让您的折叠反映手头的任务。


cuo*_*glm 5

您可以folding在当前会话中启用,如 @Anthon 的回答。但如果你想让它永久存在,你必须至少将这一行设置为.vimrc折叠工作:

set foldmethod=indent
Run Code Online (Sandbox Code Playgroud)

indent是一种折叠,你可以看到更多:help foldmethod

'foldmethod' 'fdm'      string (default: "manual")
                        local to window
                        {not in Vi}
                        {not available when compiled without the +folding
                        feature}
        The kind of folding used for the current window.  Possible values:
        fold-manual     manual      Folds are created manually.
        fold-indent     indent      Lines with equal indent form a fold.
        fold-expr       expr        'foldexpr' gives the fold level of a line.
        fold-marker     marker      Markers are used to specify folds.
        fold-syntax     syntax      Syntax highlighting items specify folds.
        fold-diff       diff        Fold text that is not changed.
Run Code Online (Sandbox Code Playgroud)

现在,每次使用 打开文件时vim,您都可以看到代码按照您设置的方法折叠。然后你可以使用za,, zc.zo