Pug "input" 的 Emmet 缩写正在插入不需要的#

Emmet abbreviation for Pug "input" is inserting an unneeded #

我正在 VS Code 中处理 Pug 模板,每当我尝试使用 emmet 缩写 input:text(或与此相关的任何输入)时,它都会解析为 input#(type="text", name="")

这不是世界末日,但它让我发疯,我不明白为什么会这样或如何改变它。

我想我的问题是:是否有任何方法可以改变这种行为或我可以引起注意的任何地方?

问题在于对基于缩进的语法(Slim、Pug 等)的属性 idclass 的处理。

出于某种原因,它将属性从其当前位置删除,并将 id 的字符串 #class. 推到前面。

这是由 3297 行附近的 2 个正则表达式语句控制的 C:\Program Files\Microsoft.VS.Code\resources\app\extensions\emmet\node_modules\vscode-emmet-helper\out\expand\expand-full.js

改变

const reId = /^id$/i;
const reClass = /^class$/i;

const reId = /^Xid$/i;
const reClass = /^Xclass$/i;

您还必须删除目录中此文件的缓存版本 C:\Users\__username__\AppData\Roaming\Code\CachedData\__some_hex_value__

重新启动 VSC,它应该可以工作了。

对于 linux 系统,您必须找到这些文件的位置。

我终于明白为什么会这样了,我的困惑基本上是对适当形式创建的误解。

所有文本输入都应该有一个与之相关联的 ID,因此 Emmet 期望 shorthand 中有一个 ID。所以这个:

input:text#user

解析为

input#user(type="text", name="")

效果很好!太糟糕了,我花了几个月的时间才意识到自己有多愚蠢!