vscode全局替换需三步:先用ctrl+shift+f打开搜索面板再点replace图标激活替换;必须勾选「在文件中查找」并手动保存;正则引用捕获组用$1而非\1,排除目录需修改files to exclude。

VSCode全局替换快捷键不是“按一下就全换完”,新手最容易卡在面板没打开、范围没设对、改了却没保存这三步上。
Ctrl+Shift+H 按了没反应?先确认面板是否真打开了
很多人按 Ctrl+Shift+H(Windows/Linux)或 Cmd+Shift+H(macOS)后没弹出替换面板,其实是光标不在编辑器里——比如正聚焦在终端、调试控制台或设置页。此时快捷键会失效或触发其他命令。
- 更稳的做法:先按 Ctrl+Shift+F 打开搜索面板 → 输入关键词 → 再点搜索框右侧的
Replace图标(或按Alt+Enter),这时替换框才真正激活 - Mac 用户注意:
Cmd+Alt+F和Cmd+Option+F是同一组物理按键,但 VSCode 文档只认Cmd+Option+F;如果系统级快捷键冲突(如 macOS 截图),Cmd+Shift+H更可靠 - 面板右上角显示灰色“文档”图标,说明它还卡在“当前文件”模式;必须点 ⋯ → 勾选「在文件中查找」才能切回全局
替换了但 Git 没变化?你根本没写入文件
VSCode 的 Replace All 只修改编辑器内存,不自动保存到磁盘。标题栏出现 ● 圆点 ≠ 已落盘,只是“有未保存更改”。
- 必须手动按
Ctrl+S(单文件)或Ctrl+Shift+S(全部已修改文件) - 更省心的方案:启用
File > Auto Save,设为afterDelay,避免漏存 - 没打开过的文件不会被加载进编辑器,
Replace All对它们完全无效;真要改所有匹配文件,得点搜索结果列表上方的Replace in Files按钮(两个重叠文档图标)
正则替换总失败?$1 和 \1 不是一回事
VSCode 用 JavaScript 正则引擎,捕获组引用只认 $1、$2,写 \1 或 $$1 会静默失败——界面不报错,也不替换,只是原样保留。
- 查
class="([^"]+)",替换填class="$1 is-primary",不是class="\1 is-primary" - 要字面量输出
$1,得写成$$1 -
.*默认不跨行;想匹配多行内容,必须勾选.*按钮旁的 dotAll 模式(或用[\s\S]*替代) - 中文括号、全角符号、未转义的
.或/会导致正则静默失效;建议先关掉.*按钮,确认普通文本能搜到,再逐步加正则
为什么搜不到 node_modules 里的内容?默认就被排除了
VSCode 默认跳过 node_modules、dist、.git 等目录,不是搜索能力弱,是排除规则太强。
- 检查搜索面板右上角的
files to exclude,删掉node_modules这一行,或改成!node_modules/**(表示“不排除”) - 同时取消勾选
Use Exclude Settings and Ignore Files,否则.gitignore和settings.json里的files.exclude仍生效 - 想只搜 PHP 文件?在
files to include里填**/*.php;想限定 src 下的 TS 文件?填src/**/*.ts
最常被忽略的一点:VSCode 不提供替换前的 diff 预览,误操作无法撤回——除非你开了自动保存且 Git 已跟踪。动手前先提交一次,比什么都实在。











