Visual Studio Code 可以在 razor .cshtml 文件中使用 Emmet 补全吗

Posted

技术标签:

【中文标题】Visual Studio Code 可以在 razor .cshtml 文件中使用 Emmet 补全吗【英文标题】:Can Visual Studio Code use Emmet completion in razor .cshtml files 【发布时间】:2018-03-23 03:40:26 【问题描述】:

我正在使用 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 文件?有没有其他方法可以让它工作(除了重命名文件,这是另一种解决方案)?

【问题讨论】:

【参考方案1】:

根据this link,*.cshtml文件对应的语言是razor,所以需要在emmet mappings中指定如下:

"emmet.includeLanguages": "razor": "html"

【讨论】:

很高兴它帮助了你 非常感谢@Aegis,我试图设置错误的配置:``` "emmet.includeLanguages": "cshtml": "html" ``` =/ 现在可以了太棒了! 这似乎在 OmniSharp 插件 1.17.0 版中被破坏,但您可以通过禁用该插件来恢复全部功能。您可以通过将"razor": "html" 更改为"aspnetcorerazor": "html" 来恢复部分功能。 @Chris 实际答案对我不起作用,但您的答案对我有用,谢谢! 澄清:禁用 OmniSharp 插件使 "razor": "html" 工作。如果您保留插件,您可以使用"aspnetcorerazor": "html" 获得一些功能。如果您发现自己切换插件,则不必不断更改设置。您可以同时激活:"razor": "html","aspnetcorerazor": "html"【参考方案2】:

更新: 按 Ctrl+K 比 M (Ctrl+K,M) 比从你想要的下拉列表中选择荧光笔这是一个常用的快捷方式。很有用。甚至适用于任何文件类型。 IE。创建一个新文件并编写一些 xml 或您想要的语言而不是 Ctrl+K,M 您可以即时指定/覆盖 ide hilighter。非常有用的捷径。试试吧。你不会忘记 Ctrl+K,M。我在 vscode 中使用过的最有用的热键组合之一。通过这种方式,代码完成功能会唤醒并以您选择的语言工作。

在 vscode > settings.json 我添加了上面提到的相关代码。 emmet 适用于 cshtml 文件。

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

【讨论】:

Blazor 需要这个 "aspnetcorerazor":"html"

以上是关于Visual Studio Code 可以在 razor .cshtml 文件中使用 Emmet 补全吗的主要内容,如果未能解决你的问题,请参考以下文章

visual studio code

Visual Studio Code更改语言

vscode: Visual Studio Code 常用快捷键

visual studio code如何运行c

是否可以在 C# 中编写 Visual Studio Code 扩展

开发环境安装 Visual Studio Code 开发环境 ( 下载 Visual Studio Code 安装器 | Visual Studio Code )