auto rename tag插件可实现html/vue/jsx标签开闭双向同步修改,需启用"html.autorenametag": true、正确设置语言模式及白名单,避免与prettier等插件冲突。

HTML标签改了不自动同步闭合标签?装 Auto Rename Tag
开闭标签手动改容易漏、错位、嵌套混乱,尤其写 Vue 或 JSX 时,v-if 套 div 套 span,一删就报错。Auto Rename Tag 插件能实时双向联动修改——改开头的 <div>,结尾的 <code>
自动跟着变;改
<input> 为
<textarea></textarea>,闭合部分也同步更新。
注意几个实际踩坑点:
- 默认只对标准 HTML 标签生效,Vue 的
<template></template> 或自定义组件标签需在设置里加白名单:"auto-rename-tag.activationOnLanguage": ["html", "vue", "javascriptreact"]
- 如果用了 Prettier,它可能在保存时把标签格式重排(比如换行缩进),导致 Auto Rename Tag 暂时失效——建议关掉 Prettier 对 HTML 的格式化,或用
"prettier.htmlWhitespaceSensitivity": "ignore" 缓解
- 遇到
<img>、<input> 这类自闭合标签,插件不会生成 ,行为符合 HTML 规范,不是 bug
路径 import 总是拼错?Path Intellisense 要配 jsconfig.json
写 import utils from '@/utils/request' 却点不开、跳不到,不是插件没装,而是 VSCode 不知道 @ 指向哪。Path Intellisense 默认只认相对路径(./、../),对 webpack / Vite 别名(如 @、#src)必须显式声明。
实操步骤很简单:
保存后代码格式一团糟?Prettier 和 ESLint 别硬刚
ESLint 报 '===' is required,Prettier 却把 === 改成 ==(其实是你配置冲突了)。两者定位不同:ESLint 检查逻辑和规范,Prettier 只管样式。强行让它们“各管各的”,结果就是保存一次格式炸一次。
真正稳的做法是分层控制:
- 用
eslint-config-prettier 关掉 ESLint 所有和格式相关的规则(比如缩进、引号、分号),只留逻辑类规则(no-unused-vars、no-console)
- 把 Prettier 设为默认 formatter:
"editor.defaultFormatter": "esbenp.prettier-vscode"
- 开启
"editor.formatOnSave": true,但关掉 "editor.codeActionsOnSave": { "source.fixAll.eslint": true } ——避免 ESLint 在保存时抢着格式化
- 团队项目务必统一
.prettierrc 和 .eslintrc.js,否则本地格式和 CI 检查不一致
Vue 文件里变量点不动?Volar + jsconfig.json 缺一不可
在 <template></template> 里写 {{ userInfo.name }},Ctrl+点击 userInfo 没反应,常见原因不是插件没装,而是类型系统没打通。Vue 3 项目必须用 Volar(不是 Vetur),且它依赖 TS/JS 的路径解析能力。
关键组合动作:
- 装 Volar 后,禁用旧版 Vetur(二者冲突,会直接禁用 Volar 的语言功能)
- 确保项目有
jsconfig.json 或 tsconfig.json,且包含 "include": ["src/**/*"],否则 Volar 找不到 data 或 setup() 返回的响应式对象定义
- Volar 默认启用
Take Over Mode,但某些工作区(比如含多个子包的 monorepo)可能需手动开启:命令面板搜 Volar: Switch to Take Over Mode
- 如果
ref 或 computed 定义的变量仍跳不了,检查是否漏写了 defineComponent 包裹,或 script setup 里用了非响应式解构(如 const { name } = props)
真实项目里,插件不是装了就灵,而是每一步配置都得咬住上下文:路径别名、TS 类型根、Vue 版本、构建工具差异。少一个环节,光标悬停、跳转、格式化这些基础体验就会断链。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!