【问题标题】:Collapse comments and all functions in vim/gvim折叠 vim/gvim 中的注释和所有函数
【发布时间】:2010-12-17 04:44:12
【问题描述】:

我是 vim 的新手,我无法在互联网上找到如何折叠函数,我已经弄清楚如何使用 zfa} 和 zfa 折叠 C 中的参数列表)。但我不知道如何折叠 cmets 部分。我该怎么做?

第二个问题但相关,有没有办法同时折叠文件中的所有函数/参数列表/cmets?

【问题讨论】:

    标签: vim folding


    【解决方案1】:

    假设您已按照自己的意愿设置折叠区域,请将 foldlevel 设置为所需的级别。

    【讨论】:

      【解决方案2】:

      您所指的功能称为“折叠”(请参阅​​:help usr_28)。 zf 命令用于手动创建折叠,并且仅在foldmethod 选项设置为“标记”或“手动”时使用。在您给出的示例中,您在a}a) 文本对象指定的区域上创建折叠(请参阅:help usr_4.8)。

      对于 C,您可以setlocal foldmethod=syntax,折叠区域将由语法规则自动确定。这只能通过将设置放入 ~/.vim/ftplugin/c.vim 或将以下 autocmd 放入您的 ~/.vimrc 来对 C 文件进行。

      autocmd FileType c setlocal foldmethod=syntax
      

      注意两者都需要启用文件类型检测 (filetype on),而 ftplugin 解决方案需要启用文件类型插件 (filetype plugin on)。后者是前者的超集,因此您的~/.vimrc 中不需要这两个命令。

      至于打开/关闭当前缓冲区中的所有折叠,它们是 zRzM 分别命令。

      【讨论】:

      • 还需要一件事。语法效果很好,但不允许我定义 zfa) 以便我可以折叠参数列表。我有一些非常长的列表,我不需要查看其中的内容,自动折叠会非常方便,但它不会让我在语法模式下这样做,而且我有太多函数可以用于定义模式.
      • 不幸的是,您不能同时使用多个折叠方法,手动折叠创建仅适用于标记/手动方法。您可以将 syntax/c.vim 从系统范围的目录复制到 ~/.vim/syntax/c.vim 并将“fold”关键字添加到 cParen 语法定义的末尾。不利的一面是,每当发布新的主要 Vim 版本时,您都需要这样做,这样您就不会丢失上游所做的任何更改。它还要求您将开头的“{”放在单独的行上,否则它的折叠将覆盖 arg 列表折叠。
      【解决方案3】:

      将以下设置添加到 ~/.gvimrc:

      "folding settings
      set foldmethod=indent   "fold based on indent
      set foldnestmax=10      "deepest fold is 10 levels
      set nofoldenable        "dont fold by default
      set foldlevel=1         "this is just what i use
      

      然后您可以使用 za 切换折叠。您可以使用 zM 折叠所有内容,使用 zR 展开所有内容。 zm 和 zr 可用于使这些折叠恰到好处。如果遇到困难,请始终记住“help :folding”中的万能帮助文件。

      来源:http://smartic.us/2009/04/06/code-folding-in-vim/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-11
        • 2011-06-01
        • 1970-01-01
        • 2010-11-20
        相关资源
        最近更新 更多