Visual Studio Code可以在razor .cshtml文件中使用Emmet完成吗?

31

我正在使用Visual Studio Code(1.17.1,在MacOS 10.13和Windows 10上)开发一个使用razor模板的asp.net core mvc web应用程序。

Visual Studio Code支持Emmet(https://code.visualstudio.com/docs/editor/emmet)。

我的问题是Emmet在HTML文件中可以正常工作,但在razor CSHTML文件中无法工作。

我找到了以下内容:

要在默认情况下不支持Emmet缩写扩展的文件类型中启用它,请使用emmet.includeLanguages设置。确保为映射的两个方面使用语言ID。 https://code.visualstudio.com/docs/editor/emmet

但它没有指出如何找到“语言ID”列表。我试图搜索它,但你可以想象搜索编程语言ID时会发生什么!

有没有办法告诉VS Code中的Emmet将cshtml文件视为html文件?是否还有其他方法使其正常工作(除了重命名文件,这是另一种解决方案)?

2个回答

54
根据这个链接,*.cshtml文件对应的语言为razor,因此您需要在emmet mappings中进行如下指定:

"emmet.includeLanguages": { "razor": "html" }


很高兴它能帮到你。 - Rene Hernandez
30
在OmniSharp插件的1.17.0版本中,这似乎出现了故障,但您可以通过禁用该插件来恢复完整的功能。您还可以通过将"razor": "html"更改为"aspnetcorerazor": "html"来恢复部分功能。 - Chris
2
@Chris 实际答案对我没有用,但你的答案有用,谢谢! - Dalbir Singh
10
澄清:禁用OmniSharp插件可以使“razor”: “html”正常工作。 如果保留该插件,则可以使用“aspnetcorerazor”: “html”的某些功能。 如果您发现自己在切换插件,您不必不断更改设置。 您可以同时激活两个设置:“razor”:“html”,“aspnetcorerazor”:“html”。 - Chris
我必须启用 "razor.devmode": true 以及 "aspnetcorerazor": "html" - Brad
显示剩余6条评论

13

更新: 按下Ctrl+K然后按M(Ctrl+K,M),再从下拉列表中选择要使用的高亮器,这是一个常见的快捷方式。非常有用,甚至适用于任何文件类型。例如,创建一个新文件并编写一些xml或其他语言,然后按下Ctrl+K,M,您可以即时指定/覆盖IDE高亮器。这是非常有用的快捷方式,请尝试一下。您不会忘记Ctrl+K,M的。这是我在vscode中使用的最有用的热键组合之一。通过此方式,代码完成会根据您选择的语言启动并工作。

在VSCode中的settings.json中, 我添加了上面提到的相关代码。Emmet适用于cshtml文件。

 "emmet.includeLanguages": {
   "razor":"html",
   "aspnetcorerazor":"html"
  }

这个 "aspnetcorerazor":"html" 是 Blazor 所需的。 - Porkopek
还需要在.NET 6.0中添加"aspnetcorerazor":"html"。 - Terje Solem
对于 Blazor netcoreapp3.1,需要添加 aspnetcorerazor 才能得到适当的支持。这里有一个方便的代码片段,还展示了 React 的例子: https://gist.github.com/stormwild/2e870b0823bba98950de15fe8dd00f9a - Tore Aurstad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接