volar 必须启用且 vetur 必须禁用,因二者冲突导致重构失效;仅 块支持完整重构,重命名按 f2、提取函数需右键 refactor;全局替换为纯文本操作,须限定范围并备份验证。

Vue 项目在 VS Code 里做自动重构,关键不在于“装多少插件”,而在于选对主力、关掉干扰、配准语言服务——Volar 必须启用,Vetur 必须禁用,否则重构会失效或错乱。
为什么 Volar 和 Vetur 不能共存
Volar 是 Vue 3 官方语言服务器,提供语义级重命名、提取、类型跳转等重构能力;Vetur 是 Vue 2 时代的产物,其语言服务与 Volar 冲突,会导致:Rename Symbol 只改模板不改逻辑、Extract to function 报错“no valid range”、Ctrl+. 灯泡不出现。VS Code 同一时间只允许一个 Vue 语言服务器激活。
- 检查是否已禁用 Vetur:打开 Extensions 面板(
Ctrl+Shift+X),搜索vetur,点击齿轮图标 → Disable Workspace(不是 Uninstall) - 确认 Volar 已启用:搜索
volar,确保Vue Language Features和Volar Server两个子扩展都处于启用状态 - 重启窗口:执行
Developer: Reload Window,否则旧语言服务可能仍在内存中残留
Vue 文件里触发重构的正确姿势
Vue 单文件组件(.vue)分 <script></script>、<template></template>、<style></style> 三块,只有 <script></script> 块支持完整重构,<template></template> 块仅支持有限的快速修复(如指令拼写纠错),<style></style> 块基本无重构能力。

