在VS Code中,我通常只打开没有扩展名的文件filename
。我知道我可以使用更改语言模式 - >我想要的语言来更改语言语法,但是每次打开这样的文件时我都不想手动执行此操作。每次打开没有扩展名的文件时,我都可以默认使用这种语言吗?
我知道我可以这样做:
"files.associations": {
"*.myphp": "php"
}
但是如果没有扩展怎么办?此外,我希望能够在不影响其他文件类型(具有扩展名)的情况下执行此操作。
VS Code的globbing目前似乎没有办法检测没有扩展名的文件。每当有人打开问题时,他们都会将其指向this issue here。他们详细介绍了他们的globbing support here。
也就是说,我确实有一个hacky解决方案。把它放在你的“WORKSPACE SETTINGS”中(不是你的常规设置,除非你真的希望它是全局的)。
{
"files.associations": {
"[!.]": "php",
"[!.][!.]": "php",
"[!.][!.][!.]": "php",
"[!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.]": "php",
"[!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.][!.]": "php"
},
}
这可以通过为每个文件名长度添加规则并确保文件中没有句点(在我的示例中最多20个字符)来实现。这是一个可怕的hacky解决方案,但如果你抓住你的鼻子并设置一次,你可以忘记它并且事情正常。我在我的dotfiles repo中执行此操作,以将无扩展名文件与“shellscript”相关联。
您也可以使用双星形glob:"**/just_this_dir_name/[!.]": "php"
为特定目录执行此操作。
由于问题Expose 'change language' as command的关闭和插件Modelines的开发,我们现在可以在没有后缀的文件中使用vim样式模式行,并且vscode可以检测文件类型。
例:
文件名:post-commit
文件内容:
#!/bin/sh
# vim: set ft=sh
echo "hello world linked"
安装Modelines扩展后,文件正确突出显示: