在工作中我们在自定义环境下运行python,因此我们使用非标准的shebang。我测试过VSCode识别python文件没有 .py扩展名,如果他们有#!/usr/bin/env python
或/usr/bin/python
或其变体的shebang。
在工作中我使用类似于此的shebang:#!/some/directory/envroot "$ENVROOT/bin/python"
但是vs代码并没有认识到这一点,所以我每次都必须手动将语言设置为python。
我是否可以在某处将自定义shebang映射到某种语言,因此每次打开文件时都不必手动设置它?
答案 0 :(得分:5)
我在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
答案 1 :(得分:1)
补充Matt Bierner's helpful answer:
JSON设置Matt引用位于以下位置的<languageId>/package.json
文件中:
在GitHub上:
安装后:
在VSCode安装文件夹的resources/app/extensions
子文件夹中; e.g:
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
答案 2 :(得分:0)
并补充mklement0's complement:
在Linux上,请参见/usr/share/code/resources/app/extension/
例如Lua:/usr/share/code/resources/app/extensions/lua/package.json