【问题标题】:Fold only comments when file is opened in Vim在 Vim 中打开文件时只折叠注释
【发布时间】:2012-08-11 23:35:41
【问题描述】:

当我在 Vim 中查看带有详细 cmets 的长代码文件时,我希望能够加载 cmets 折叠但其他所有内容都展开的文件。我在.vimrc 中的当前折叠配置是:

set foldmethod=syntax
set nofoldenable

这样,当我想开始折叠时,我可以开始执行z 命令。但是有没有办法只折叠(块)cmets?

【问题讨论】:

    标签: vim comments folding


    【解决方案1】:

    您可以执行一个全局命令来关闭所有块注释折叠:

    :g/^\/\*/foldc
    

    这将在任何以/*(常见的块注释指示符)开头的行上执行:help foldclose。注意 /* 在这种情况下需要转义。如果您使用不同的分隔符(例如 :g#^/\*#foldc),则无需转义 /。如果您希望这自动发生,您可以将其添加到自动命令中。例如:

    set fdm=syntax fen
    augroup closeCommentFolds
       au!
       au FileType javascript %foldo | g/^\/\*/foldc
       au FileType ruby %foldo | g/^=begin/foldc
    augroup end
    

    请注意,在这些示例中,正则表达式中的^ 字符指定/*=begin 匹配位于行首。如果要匹配行首和匹配之间是否有空格,请使用^\s* 而不是^%foldo 将打开所有折叠,以便设置 foldenable,但它不会折叠所有内容(在这种情况下只是 cmets)。

    【讨论】:

    • 这是一个很棒的答案。我学到了很多。但是,它并没有开箱即用。我必须做...set fen | %foldopen | %g^/\*@call SilentFold(),其中SilentFold 是我定义的一个函数,用于抑制使用/*...*/ 样式的行的折叠错误,即使它不是块注释(是的,我反对,但我没有写代码)并使用normal zc。此外,如果您发现我所做的改进了帖子,请随时从中汲取灵感。 (它太冗长了,我也很想知道为什么。)+1 谢谢!
    • 实际上我的回答也很奇怪......它正在折叠不是 cmets 的东西,即 {...} 块。
    • @Kazark 好的,很抱歉造成混乱。我相信我更新的答案现在可以完美运行。告诉我。
    猜你喜欢
    • 2012-06-13
    • 1970-01-01
    • 2023-03-23
    • 2011-11-07
    • 1970-01-01
    • 2010-12-17
    • 2011-01-09
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多