VSCode 自定义 shebang 的语法突出显示

VSCode syntax highlighting for custom shebang

在工作中我们 运行 python 在自定义环境下,因此我们使用非标准的 shebang。我测试了 VSCode 识别 python 文件 没有 .py 扩展名,如果它们有一个 shebang 是 #!/usr/bin/env python/usr/bin/python 或变体其中

在工作中我使用类似这样的 shebang:#!/some/directory/envroot "$ENVROOT/bin/python" 但是 vs code 不识别这个,所以我每次都必须手动将语言设置为 python。

是否有某个配置可以将自定义 shebang 映射到一种语言,这样我就不必在每次打开文件时都手动设置它?

我在 VSCode 工作。

shebang 映射由 firstLine 在扩展语法贡献中定义:

    "languages": [{
        "id": "python",
        "extensions": [ ".py", ".rpy", ".pyw", ".cpy", ".gyp", ".gypi" ],
        "aliases": [ "Python", "py" ],
        "firstLine": "^#!/.*\bpython[0-9.-]*\b",
        "configuration": "./language-configuration.json"
    }]

没有设置来控制它,但您可以使用 file.associations 将这些文件直接映射到 python。

你的具体例子对我来说也像是一个错误。我们目前只使用第一行模式 if the entire line matches, which seems odd. I've opened an issue to investigate this: https://github.com/Microsoft/vscode/issues/21533

补充

Matt 引用的 JSON 设置位于以下位置的 <languageId>/package.json 文件中:

在 GitHub:

安装后:

  • 在VSCode安装文件夹的resources/app/extensions子文件夹中;例如:

    • Windows(32 位版本):

      C:\Program Files (x86)\Microsoft VS Code\resources\app\extensions
      
    • macOS:

      /Applications/Visual Studio Code.app/Contents/Resources/app/extensions
      
  • 例如,Python:

    • Windows(32 位版本):

      C:\Program Files (x86)\Microsoft VS Code\resources\app\extensions\python\package.json
      
    • macOS:

      /Applications/Visual Studio Code.app/Contents/Resources/app/extensions/python/package.json
      

并补充
在 Linux 上,参见 /usr/share/code/resources/app/extension/
例如 Lua:/usr/share/code/resources/app/extensions/lua/package.json