【问题标题】:VSCode syntax highlighting for custom shebang自定义shebang的VSCode语法突出显示
【发布时间】:2017-02-28 00:12:08
【问题描述】:

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

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

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

【问题讨论】:

    标签: visual-studio-code vscode-settings


    【解决方案1】:

    我在 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,这看起来很奇怪。我已经打开了一个问题来调查这个问题:https://github.com/Microsoft/vscode/issues/21533

    【讨论】:

    • 感谢您提供文件关联提示!所有这些文件都在 bin 目录中,所以我应该可以使用它来将它们都标记为 python。
    【解决方案2】:

    补充Matt Bierner's helpful answer

    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
        

    【讨论】:

      【解决方案3】:

      补充mklement0's complement:
      在 Linux 上,请参阅 /usr/share/code/resources/app/extension/
      例如 Lua:/usr/share/code/resources/app/extensions/lua/package.json

      【讨论】: