【问题标题】:How do I enable automatic folds in Vim?如何在 Vim 中启用自动折叠?
【发布时间】:2011-06-14 22:43:13
【问题描述】:

如何在 Vim 中启用自动折叠? set foldmethod=syntax 似乎什么也没做。

【问题讨论】:

    标签: javascript perl vim folding


    【解决方案1】:

    要允许基于语法的折叠,请将以下内容添加到您的 .vimrc

    set foldmethod=syntax
    set foldlevelstart=1
    
    let javaScript_fold=1         " JavaScript
    let perl_fold=1               " Perl
    let php_folding=1             " PHP
    let r_syntax_folding=1        " R
    let ruby_fold=1               " Ruby
    let sh_fold_enabled=1         " sh
    let vimsyn_folding='af'       " Vim script
    let xml_syntax_folding=1      " XML
    

    基于语法的折叠在位于$VIM/syntax/usr/share/vim/vimXX/syntax/ 的语言的语法文件中定义。但是有些语言的语法文件中没有内置折叠规则;例如 Python。对于那些语言,您需要从 http://vim.sf.net 下载可以折叠的东西。否则,您将需要使用基于缩进的折叠。为了有效地做到这一点,您可能需要将以下内容添加到您的 .vimrc 文件中:

    set foldmethod=indent
    set foldnestmax=2
    

    其他类型的折叠

    有6种折叠方式:

    manual          manually define folds
    indent          more indent means a higher fold level
    expr            specify an expression to define folds
    syntax          folds defined by syntax highlighting
    diff            folds for unchanged text
    marker          folds defined by markers in the text
    

    就我个人而言,我只使用语法折叠。通常,我只想折叠方法而不是折叠每个缩进级别。工作中不一致的缩进和格式怪异的遗留代码常常使缩进折叠变得困难或不可能。给文档添加标记很繁琐,不使用 Vim 的人在编辑文档时也不会维护它们。手动折叠效果很好,直到有人在源代码管理中编辑您的代码并且您的所有折叠现在都在错误的位置。

    更多阅读

    1. 请参阅:help fold-methods 了解不同折叠方法的详细信息。
    2. 请参阅 :help folding 了解用于操作折叠的键盘命令。
    3. 请参阅 :help folds 以获取有关折叠的整个主题的帮助。

    【讨论】:

    • 您真的在问题发布后的一分钟内输入了所有这些信息吗?为清晰度、细节和速度+1!
    • 感谢分享您的经验!你不知道如何启用 C++ 折叠吗?
    • 供参考:测试C/C++不需要额外的let ...=1命令,只需要set foldmethod=syntax就够了。即某些语言不需要let 命令。
    • 永久 JSON 折叠的 let 设置是什么?我在任何地方都找不到它。
    【解决方案2】:

    JavaScript 折叠也不适合我。我发现当我执行 set syntax=javaScript(大写的 S)时,它突然起作用了。

    【讨论】:

    • 呵呵,我这样做了,突然间颜色就消失了,猜猜它不适合所有人。 :) vim version 8.
    • 起初我尝试过,但它没有折叠任何东西,并带走了语法高亮。然后我设置了 syntax=javascript,突然我的所有函数都折叠起来了。很奇怪。
    【解决方案3】:

    在这里尝试了所有解决方案,但没有一个适用于 NeoVim v0.3.1 直到我找到vim-javascript 插件并且折叠开始工作。

    【讨论】:

    • 这个;此外,我必须为 Neovim 执行 set syntax=javaScript 才能真正检测到 JavaScript,然后立即激活折叠(因为我的 init.vim 文件中已经有 set foldmethod=syntax,我想)。现在将其放入init.vim 文件中,但仅限于检测到 JS 文件的情况。
    【解决方案4】:

    在新版本的 Vim 中启用折叠的方式已经改变(我使用的是 vim 7.4)。现在您应该创建文件~/.vim/ftplugin/javascript.vim(在 linux 上)并添加代码折叠说明,如 Eric Johnson 的回答中所述。必须通过将其放入您的 .vimrc 来启用特定文件类型的文件类型检测和加载插件:

    filetype plugin on
    

    【讨论】:

      猜你喜欢
      • 2010-09-12
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 2011-06-01
      • 2011-03-08
      相关资源
      最近更新 更多