ctrl+d只选中未修改的原始文本匹配项,因已编辑处会被跳过;需全选同词用ctrl+shift+l;正则批量操作须通过搜索面板启用.*模式,注意转义与replace in files落盘。

Ctrl+D 为什么只选中部分匹配项?
因为 Ctrl+D(Windows/Linux)或 Cmd+D(macOS)默认只匹配「未被修改过的原始文本」。一旦你改了某处,后续按 Ctrl+D 就会跳过它,继续往后找下一个干净匹配项。
常见错误现象:Ctrl+D 突然少选一个、光标停在奇怪位置、最后几处没被选中——大概率是其中某处你提前手动编辑过。
- 想严格选中所有同词(不管是否改过),用
Ctrl+Shift+L更可靠 -
Ctrl+U可撤销上一次Ctrl+D的选中,比退格安全 - 如果目标不是完整单词(比如要选所有数字、所有
class="xxx"),Ctrl+D无能为力,必须走正则路径
正则批量选中必须打开搜索面板
单纯靠快捷键无法处理模式化内容。例如选中所有函数调用 \w+\(\)、所有 CSS 类名 class=["']([^"']*)["'],必须进搜索面板启用正则模式。
操作路径:Ctrl+H → 点击搜索框右侧 .* 图标(启用正则)→ 输入表达式 → 按 Alt+Enter(Windows/Linux)或 Option+Enter(macOS)一键选中全部匹配项。
- 大小写敏感默认开启,需忽略时点搜索框右侧
Aa按钮关闭 - 括号、点号等特殊字符要转义,比如
\(和\. - 捕获组用
$1、$2在替换时引用,比硬编码更安全(如替换类名加前缀:class="$1 my-prefix-$1")
Replace All 和 Replace in Files 是两回事
点击搜索面板右上角的 Replace All,只是把匹配内容在内存里改了;文件标题栏出现 ● 圆点,不代表已落盘。真正写入磁盘的是 Replace in Files(两个重叠文档图标)。
-
Replace in Files会自动加载未打开的文件、执行替换、触发保存逻辑 - 只读文件(右下角显示
Read-only)会被跳过,需先解除只读或用管理员权限运行 VSCode - 如果搜不到
src/api或node_modules,检查search.exclude配置——默认排除这些路径,可临时取消勾选「使用排除设置」绕过
多光标粘贴行为取决于剪贴板格式
用 Ctrl+Shift+L 或正则选中多处后,直接 Ctrl+V 的结果不固定:
- 复制的是单行文本 → 每个光标位置都填入该行
- 复制的是多行文本(比如从表格复制三行)→ 第一行贴到第一个光标,第二行贴到第二个光标……超出部分丢弃
- 列选择(
Alt+拖拽)后粘贴,同样遵循该规则,不是“全部贴同一行”
实际批量改 Vue 文件时,最容易被忽略的是:没确认 Replace in Files 是否真正执行、没关掉 search.exclude 导致漏改、以及正则里忘了转义括号或点号——这三处一错,替换就静默失败。











