VSCode 不能自动完成HTML

124

我在Windows 7上安装的新版Visual Studio Code遇到了问题。 在Mac上,编辑器会自动关闭HTML标签,但在我Win7上没有。 我认为一定有某种选项可以打开它,但我找不到。

我指的是例如输入<html时,IntelliSense弹出并单击Enter键通常会自动添加</html>,我的不起作用。 (IntelliSense弹出,但当您选择其中一个选项时,它不会自动关闭标记:<h1> -> </h1>


你可以使用 Auto Close Tag 插件来满足你的需求。 - jialin wang
2
2.输入一个标签名,比如div,然后按两次Tab键,它会自动完成整个标签 ----- > <div></div> - jialin wang
你也可以自动创建带有类或ID名称的<div>元素。 在编辑器中输入“.someclassname”并按下Tab键。你将得到<div class"someclassname"></div>。或者只需在名称后面放置#而不是句号,然后按下Tab键,它将为您提供一个带有ID的<div>。 - tcanbolat
18个回答

214

输入标签名称(不需要以<开头),然后按Tab键

例如,输入div,然后按tab键,VS会将其转换为<div></div>

或者输入开始标签,然后按两次Tab键

例如:

  1. 输入<div
  2. 按Tab键
  3. 再按Tab键

它会添加闭合标签


2
自闭合标签(例如<input />)怎么办? - Randall Flagg
2
只想补充一下,这是 Emmet 功能的一部分,它允许您轻松生成更复杂的 HTML 结构,不仅仅是标签对。例如,您可以阅读这篇文章,或者只需在 Google 上搜索 Emmet 即可。 - Alex Che
1
第一个建议非常出色 - 谢谢!第二个建议不再适用,因为在第一个制表符后你会得到<<div></div>>。所以只需继续输入div然后按 Tab 键即可 :) - Tim Malone
3
我的代码无法工作。我还需要检查其他什么吗? - Farooq Hanif
1
下面的答案解决了我的问题。我正在编辑一个 .HTML 文件,但是 VS Code 的语言模式是 Nunjucks。 - Ade
显示剩余5条评论

203

我遇到了同样的问题,然后在我的vs code右下角看到了一些东西...我用的不是HTML,而是Django-HTML,所以我把语言改成了HTML,哇,一切都工作正常了。查看图片


1
我遇到了类似的问题,但是我意识到我在 PHP 文件中写入了 HTML。我想只要我还在这样做,我就不能使用自动关闭标签。 - Hashim Aziz
11
无需改变语言,只需在settings.json中添加以下内容:"emmet.includeLanguages": { "django-html": "html"}。这会使得Emmet插件支持Django模板语言的HTML语法。 - raultedesco
1
我修复了Twig模板无法智能感知HTML的问题,这要感谢@raultedesco上面的评论。 Ctrl + Shift + p -> 打开Perferences:Open Settings(UI)->搜索includedLanguages->找到Emmet Included Languages->输入Item:twig; Value:html->按下“添加项目”->享受吧。 - Valentine Shi
3
你真是救了我,我被这些问题困扰了好几个月,直到今天有时间研究它,当我看到你的答案时,我完全打算重新安装VS并重新开始。太棒了! - Danielle Lpz
2
非常感谢。节省了我大量的时间!! - Soham Mafidar
显示剩余3条评论

52

来自0.3.0版本更新说明

HTML标签的自动闭合已被移除,并改为更智能的在</上进行IntelliSense提示。


8
哦,这不是我所希望的。有办法恢复吗?修改一些文件或下载什么东西?我想使用带有自动完成功能的VSCode。谢谢。 - Harvey3589661
64
我也在寻找这个功能,但我注意到在0.10.6中使用"tab"键对我很有效。例如,输入div(不需要<>),然后立即按下"tab"键,它就会自动输入<div></div>。虽然不完全相同,但可能有用。这些快捷键(Emmet)的文档在这里 - peterc
4
是的,这归功于 Emmet。Emmet 让我们可以不用花括号输入元素名称,它会自动添加必要的内容。它非常强大。 - John Papa
3
在VS Code 1.5.3上,这对我不起作用。如果我输入<div>然后输入</>,它不会关闭/完成标签。我有什么遗漏的吗? - Michael Giovanni Pumo
4
最新的更新后,仅键入“div”而无需使用“<>”,然后按Tab键就无法正常工作了。 有没有一种方法可以重新启用此功能? - Kokodoko
显示剩余3条评论

32

这里有一个很酷的技巧(实际上是Emmet缩写):

  • 编写标签名称|例如,h1
  • 在标签名称后添加星号|例如,h1*
  • 按下Tab|(结果为<h1></h1>

­

提示: 这也适用于自闭合标签,例如- inputimg等。


1
@Kokodoko 是的,它确实 :P - ɢʀᴜɴᴛ
1
@Kokodoko 你应该安装 Emmet 扩展。 - Sudhanshu
1
这个可以工作,但是没有必要包含 *。1.21.0 - Sauce
这个不起作用。@Sudhanshu,有成千上万的扩展名为emmet。 - Blue Clouds
1
@BlueClouds 是的,任何提供 HTML 缩写支持的插件都可以使用。通常我会选择安装量最大的插件作为通用规则。 - Sudhanshu
显示剩余2条评论

23

从Django-HTML更改为HTML。在此输入图片描述


19
  1. 按下Ctrl + Shift + P打开命令面板。
  2. 在搜索器中键入'更改语言模式'
  3. 选择'更改语言模式'
  4. 在搜索器中键入'HTML'
  5. 并选择'HTML'(它可能被设为'django-html')。

16
你可以尝试这个 VS Code 的扩展。它实现了自动关闭标签的功能,符合你的需求:
  • 在输入开标签的闭合括号时,会自动添加闭合标签
  • 插入闭合标签后,光标位于开标签和闭合标签之间

这正是我所需要的。现在的操作和Brackets一样,非常棒。谢谢! - Harvey3589661
是啊,但是……在早期版本的VS Code中已经启用了它。这不仅仅是设置集合settings.json中的某个设置吗? - Kokodoko

9
我在使用VSCode(1.30.2)编辑HTML文件时,在Mac Sierra(10.12.6)遇到了同样的问题。根据VSCode文档https://code.visualstudio.com/docs/languages/html,智能感知应该可以直接使用。
实际上,“语言检测”(位于屏幕底部编辑器状态栏右侧的位置)设置为自动检测,并将文件识别为django-html。当手动切换回纯Html后,一切正常。

6

按下 ++ --> 输入 --> 然后选择

这对我很有效。


2
我在这个答案中没有看到任何新的东西。 - Vega
@Vega 我认为这对像我一样的新VSCode用户仍然很有帮助。 - Arefe
你有检查过其他答案中是否已经提到了这一点吗? - Vega

5
  1. 打开设置:文件 -> 首选项 -> 设置 (Ubuntu 中使用 CTRL + COMMA 快捷键)。
  2. 在搜索栏中输入 Emmet
  3. 找到 按 Tab 键触发扩展 并勾选它。

谢谢...谁知道在这个时代这会成为一个问题。在最近的更新中,折叠功能在<script>中停止工作了。 - undefined

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