◆
WebStorm 设置按 Tab 键扩展 Emmet 标签
写 HTML 和 Vue 模板时我很依赖 Emmet:敲 div.container>ul>li*3 一键展开成完整结构,比手写标签快太多。WebStorm 内置了 Emmet 支持,但默认的展开键是 Tab,而 Tab 同时也是代码补全的确认键和缩进键,三者会互相抢——有时候我想展开 Emmet 缩写,按下去却只是插入了一个缩进,或者选中了补全列表里的第一项。
这篇记的是 Emmet 展开键的设置位置,把它改成 Enter 或者自定义快捷键就能和 Tab 分开,各干各的。
设置位置
打开设置面板,进入 Editor → Emmet → HTML(CSS 缩写在同级的 CSS 页面,JSX 在 JSX 页面),关注这两项:
Enable Emmet:Emmet 总开关,必须先勾上,不然所有缩写都不生效。Expand abbreviation with:关键项,下拉框选展开键,常见值是Tab、Enter、Custom。选Custom之后可以去Keymap里给Expand Abbreviation这个 action 绑一个不冲突的组合键。
页面上还有几个影响展开结果的开关:Enable automatic URL recognition(自动识别 URL 生成链接标签)、Add edit point at the end of template(展开后在末尾留一个编辑锚点)、Filters enabled by default(默认启用的过滤器,比如 xsl、bem)。
下图是这个面板,重点看 Enable Emmet 的勾选状态和 Expand abbreviation with 下拉框当前选的键。

注意事项
- HTML、CSS、JSX 三个页面的 Emmet 配置是独立的,改了 HTML 不影响另两个,Vue 单文件组件的
<template>走 HTML 那套,<style>走 CSS 那套。 - 保留
Tab的话要接受它和补全的冲突:补全列表弹出时Tab优先给补全,得先按Esc关掉列表再按Tab才能展开缩写。 - Emmet 缩写必须写在一行且不能有多余空格,
div > ul这种带空格的写法展开不了,要写成div>ul。 - 在 Vue 或 React 项目里写类名要注意语法差异:Vue 模板用
div.box展开出的是class="box",而 JSX 页面开启 Emmet 后展开的是className="box",两者由所在文件类型决定,不需要手动切换。 - 记不住缩写语法时可以先用
Ctrl + Alt + J(Surround with Live Template)配合内置模板,或者查 Emmet 官方的 cheat sheet,常用的也就>子元素、+兄弟元素、*重复、#id、.class、{}文本这几个符号。

还没有留言,来发表第一条吧~