在Vim中打开文件时仅折叠注释
当我在Vim中查看带有详细注释的长代码文件时,我希望能够加载带有折叠注释的文件,但其他所有内容都展开。我的在Vim中打开文件时仅折叠注释,vim,comments,folding,Vim,Comments,Folding,当我在Vim中查看带有详细注释的长代码文件时,我希望能够加载带有折叠注释的文件,但其他所有内容都展开。我的.vimrc中的当前折叠配置是: set foldmethod=syntax set nofoldenable 这样,当我想开始折叠时,我可以开始执行z命令。但是有没有办法只折叠(块)注释?您可以执行全局命令关闭所有块注释折叠: :g/^\/\*/foldc 这将在以/*开头的任何行上执行:help foldclose(一个公共块注释指示符)。请注意,在本例中需要转义/和*。如果使用不同
.vimrc
中的当前折叠配置是:
set foldmethod=syntax
set nofoldenable
这样,当我想开始折叠时,我可以开始执行
z
命令。但是有没有办法只折叠(块)注释?您可以执行全局命令关闭所有块注释折叠:
: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
,但它不会折叠所有内容(在这种情况下仅折叠注释)。这是一个很好的解决方案。我学到了很多。然而,它不是开箱即用的。我必须执行…set fen |%foldopen |%g^/\*@call SilentFold()
,其中SilentFold
是我定义的一个函数,用于抑制使用/*…*/
样式的行的折叠错误,即使它不是块注释(是的,我反对,但我没有编写代码),并使用normal zc
。另外,如果你发现我所做的改进了帖子,请随意从中吸取教训。(太冗长了,我也想知道原因。)+1谢谢!实际上,我的回答也很奇怪……它是在折叠非注释的东西,即{…}
块。@Kazark好的,很抱歉混淆了。我相信我的最新答案现在运行良好。让我知道。