【问题标题】:Emmet abbreviation for Pug "input" is inserting an unneeded #帕格“输入”的 Emmet 缩写是插入一个不需要的 #
【发布时间】:2020-06-11 00:24:55
【问题描述】:
我正在 VS Code 中处理 Pug 模板,每当我尝试使用 emmet 缩写 input:text(或任何与此相关的输入)时,它都会解析为 input#(type="text", name="")。
这不是世界末日,但它让我发疯,我不知道为什么会这样或如何改变它。
我想我的问题是:有什么方法可以改变这种行为或我可以在任何地方引起注意吗?
【问题讨论】:
标签:
visual-studio-code
pug
emmet
【解决方案1】:
问题在于对基于缩进的语法(Slim、Pug 等)的属性 id 和 class 的处理。
由于某种原因,它从当前位置删除了属性并将字符串 # 推到前面,用于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 系统,您必须找到这些文件的位置。
【解决方案2】:
我终于明白为什么会这样了,我的困惑基本上是对正确创建表单的误解。
所有文本输入都应该有一个与之关联的 id,因此 Emmet 需要一个简写形式的 ID。所以这个:
input:text#user
解决
input#user(type="text", name="")
效果很好!太糟糕了,我花了几个月的困惑才意识到我是多么愚蠢!