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:
- https://github.com/Microsoft/vscode/tree/master/extensions
- 例如,Python:https://github.com/Microsoft/vscode/blob/master/extensions/python/package.json
安装后:
在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
在工作中我们 运行 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:
- https://github.com/Microsoft/vscode/tree/master/extensions
- 例如,Python:https://github.com/Microsoft/vscode/blob/master/extensions/python/package.json
安装后:
在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