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

如何在VS Code中实现Mako生成C++代码的语法高亮?

在VS Code中同时实现C++与Mako语法高亮的解决方案

现成扩展方案

目前没有专门针对C+++Mako混合语法的一站式扩展,但可以通过组合现有工具实现:

  • 先安装Mako Templates扩展(负责Mako语法高亮),再搭配支持多语法混合的扩展,比如Multi Language Support。这类扩展允许你在单个文件中为不同行/区块指定不同的语法规则。

自定义配置实现混合高亮

方法1:用多语法扩展拆分规则

安装Multi Language Support后,在settings.json中添加自定义语法规则:

"multiLanguage.custom": {
    "mako-cpp": {
        "languages": [
            {
                "languageId": "cpp",
                "pattern": "^(?!%).*$" // 所有非%开头的行用C++高亮
            },
            {
                "languageId": "mako",
                "pattern": "^%.*$" // %开头的行用Mako高亮
            }
        ]
    }
}

保存后,打开你的模板文件,右下角切换语法为mako-cpp即可。

方法2:让C++高亮忽略%开头的行

如果不想用多语法扩展,可以修改C++的诊断和高亮规则:

  1. 在settings.json中添加,让clangd(推荐的C++语言服务)忽略%开头行的语法错误:
"clangd.diagnostics.exclude": [
    "^%.*$"
]
  1. 同时自定义高亮,把%开头的行标为注释风格:
"editor.tokenColorCustomizations": {
    "[C++]": {
        "textMateRules": [
            {
                "name": "Mako Lines",
                "scope": "comment.line.mako",
                "settings": {
                    "foreground": "#6A9955" // 和注释同色,可选
                }
            }
        ]
    }
}

方法3:后缀别名适配Mako扩展

把你的模板文件命名为xxx.cpp.mako,然后在settings.json中关联后缀到Mako语法:

"files.associations": {
    "*.cpp.mako": "mako"
}

多数Mako扩展会自动识别嵌入的C++代码并启用基础高亮,这种方式最简单。

测试代码示例

<%
def genargs(n): 
    return ",".join([ "args[%d]" % j for j in range(n) ])
%>

#include <vector>
#include <limits>

namespace trivial {

template <size_t N, typename... Args>
struct FnType {
    using Call = typename FnType<N - 1, double, Args...>::Call;
};

template <typename... Args>
struct FnType<0, Args...> {
    typedef double (*Call)(Args...);
};

double callfn(void* fn, const std::vector<double>& args) {
    switch (args.size()) {
% for row in range(MAXARGS+1):
        case ${row}: return FnType<${row}>::Call(fn)(${genargs(row)}); break;
% endfor
    }
    return std::numeric_limits<double>::quiet_NaN();
}

} // namespace trivial

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:47:47