You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vim中折叠C风格的多行注释/*...*/?

Vim 仅折叠 C/C++ 多行 C 风格注释配置方案

之前的配置无法生效是因为foldexpr需要返回明确的折叠层级规则,而非单纯的布尔匹配结果,同时单行正则无法跨行识别多行注释范围,正确配置如下:

将以下代码添加到你的 .vimrc 配置文件中即可生效:

" 仅针对C/CPP文件启用自定义注释折叠规则
autocmd FileType c,cpp setlocal foldmethod=expr foldexpr=CCommentFold()

function! CCommentFold()
    let current_line = getline(v:lnum)
    " 单行 /* */ 注释默认不折叠,如需折叠可将返回值改为1
    if current_line =~ '^\s*/\*.*\*/\s*$'
        return 0
    " 多行注释起始行,标记为折叠起始
    elseif current_line =~ '^\s*/\*'
        return 1
    " 多行注释结束行,标记为折叠结束
    elseif current_line =~ '\*/\s*$'
        return '<1'
    " 多行注释中间行,归属到当前折叠块
    elseif synIDattr(synID(v:lnum, 1, 0), "name") =~? 'comment'
        return 1
    " 非注释行不折叠
    else
        return 0
    endif
endfunction

该配置的特性:

  • 仅折叠/* */格式的多行C风格注释,不会折叠函数、括号、单行//注释等其他内容
  • 依赖Vim内置的语法识别能力判断注释范围,不会出现误折叠代码的问题
  • 可自行调整单行块注释的折叠行为,只需修改对应位置的返回值即可

内容的提问来源于stack exchange,提问作者neolith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 07:06:08