有没有办法让 Visual Studio 代码识别 EJS 文件中的 HTML 语法

Is there a way to make Visual Studio Code recognize HTML syntax in EJS files

我正在 Mac 上使用 Visual Studio 代码来处理 Node.js 应用程序。

有没有办法让 Visual Studio 代码将 EJS 文件识别为 HTML 标记?我在用户首选项中没有看到任何文件/方案关联。

事实上,你可以。

正如 Andre 指出的那样,现在您可以在工作区 settings.Go 到 Visual Studio 代码设置中执行此操作:File >> Preferences >> User Settings

// Place your settings in this file to overwrite the default settings
{                
// Configure file associations to languages (e.g. "*.extension": "html"). These have precedence over the default associations of the languages installed.
     "files.associations": {"*.ejs": "html"}     
 }

点击VS Code底部的'Plain text'选项卡window并将其更改为HTML,截图如下:

在 Visual Studio 2015 社区中,我能够将 ejs 扩展与 html 编辑器相关联:

工具 > 选项 > 文本编辑器 > 文件扩展名

在扩展名中输入"ejs"。从下拉选项中选择 "HTML Editor"。单击添加。单击“确定”。

如果打开了 ejs 文件,请将其关闭并重新打开。

按照documentation的指示 我更改了这个文件 c:\Program Files(x86)\Microsoft VS Code\resources\app\extensions\html\package.json 所以它看起来像这样:

{
    "name": "html",
    "version": "0.1.0",
    "publisher": "vscode",
    "engines": { "vscode": "*" },
    "extensionDependencies": [
                     "html"
                ],
    "contributes": {
        "languages": [{
            "id": "html",
            "aliases": ["ejs"],
            "extensions": [".ejs"]
        }]
    }
}

试过..对我有用..懒得创建新文件夹 atm

新版本,允许我们添加文本片段:
https://code.visualstudio.com/updates#_add-textmate-snippets
也许我们可以添加这个来支持 ejs:
https://github.com/gregory-m/ejs-tmbundle/blob/master/Syntaxes/JavaScript%20Template.tmLanguage

在 VSCode extensions 文件夹中找到 html 扩展名:

../app/extensions/html

在 MacOS X 上是

/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/html

Windows 是

c:\Program Files(x86)\Microsoft VS Code\resources\app\extensions\html\package.json

现在编辑文件 package.json 仅添加 .ejs extensions 数组:

{
        "name": "html",
        "version": "0.1.0",
        "publisher": "vscode",
        "engines": { "vscode": "*" },
        "contributes": {
                "languages": [{
                        "id": "html",
                        "extensions": [ ".html", ".htm", ".shtml", ".mdoc", ".jsp", ".asp", ".aspx", ".jshtm", ".ejs" ],
                        "aliases": [ "HTML", "htm", "html", "xhtml" ],
                        "mimetypes": ["text/html", "text/x-jshtm", "text/template", "text/ng-template"]
                }],
                "grammars": [{
                        /* "language": "html", not yet enabled*/
                        "scopeName": "text.html.basic",
                        "path": "./syntaxes/HTML.plist"
                }]
        }

}

对了,正确的做法应该是在extensions文件夹中新建一个ejsextension,然后加入:

ejs/
ejs/package.json
ejs/snippet/
ejs/snippet/ejs.json
ejs/syntaxes/
ejs/syntaxes/EJS.plist

当然这应该有 EJS 句法/文法,但我们可以简单地复制 html 一个,所以从扩展文件夹中:

cd html/
cp -r * ../ejs/

然后 package.json 可能会像

{
        "name": "ejs",
        "version": "0.1.0",
        "publisher": "vscode",
        "engines": { "vscode": "*" },
        "contributes": {
                "languages": [{
                        "id": "ejs",
                        "extensions": [ ".ejs" ],
                        "aliases": [ "EJS", "ejs" ],
                        "mimetypes": ["text/html", "text/x-jshtm", "text/template", "text/ng-template"]
                }],
                "grammars": [{
                        "scopeName": "text.html.basic",
                        "path": "./syntaxes/EJS.plist"
                }]
        }

}

所以改变syntaxes/HTML.plist刚刚复制到syntaxes/EJS.plist.

然后重启VSCode.

转到 Visual Studio 代码设置。 文件 >> 首选项 >> 用户设置

在settings.json中添加这一行。

// Place your settings in this file to overwrite the default settings
{                
    // Configure file associations to languages (e.g. "*.extension": "html"). These have precedence over the default associations of the languages installed.
    "files.associations": {"*.ejs": "html"}     
}

重新启动 Visual Studio 代码。

有 .ejs 支持的扩展。启动 VS Code Quick Open (Ctrl+P),粘贴以下命令,然后键入 enter。

ext install ejs-language-support