Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Vim中打开文件时仅折叠注释_Vim_Comments_Folding - Fatal编程技术网

在Vim中打开文件时仅折叠注释

在Vim中打开文件时仅折叠注释,vim,comments,folding,Vim,Comments,Folding,当我在Vim中查看带有详细注释的长代码文件时,我希望能够加载带有折叠注释的文件,但其他所有内容都展开。我的.vimrc中的当前折叠配置是: set foldmethod=syntax set nofoldenable 这样,当我想开始折叠时,我可以开始执行z命令。但是有没有办法只折叠(块)注释?您可以执行全局命令关闭所有块注释折叠: :g/^\/\*/foldc 这将在以/*开头的任何行上执行:help foldclose(一个公共块注释指示符)。请注意,在本例中需要转义/和*。如果使用不同

当我在Vim中查看带有详细注释的长代码文件时,我希望能够加载带有折叠注释的文件,但其他所有内容都展开。我的
.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好的,很抱歉混淆了。我相信我的最新答案现在运行良好。让我知道。