Ctrl+Shift+H可直接打开「在文件中替换」面板,但需确保面板激活且光标在搜索框内;若右上角显示灰色文档图标,说明处于“当前文件”模式,应点击⋯→勾选「在文件中查找」或再次触发快捷键。

直接用 Ctrl+Shift+H(Windows/Linux)或 Cmd+Shift+H(macOS)打开「在文件中替换」面板,不是先搜再换,而是一步到位——但必须确认面板已激活、光标在搜索框内,否则快捷键无效。
为什么 Ctrl+Shift+H 没反应或只在当前文件生效
最常见原因是面板卡在「当前文件」模式:右上角显示灰色文档图标,而非工作区文件夹图标。这不是崩溃,是状态残留。
- 按
Ctrl+Shift+H再次触发,或点击面板右上角 ⋯ → 勾选「在文件中查找」 - 如果光标在终端、调试控制台或设置页里,快捷键会失效或被系统拦截(Mac 上
Cmd+Alt+F常被截获) - 首次全局搜索有 1–2 秒延迟,右下角显示「搜索中…」时别急着重输关键词
替换后 Git 没变化?你根本没写入磁盘
Replace All 只改编辑器内存,不自动保存到文件系统。标题栏出现 ● 圆点 ≠ 已保存,必须手动 Ctrl+S 或 Ctrl+K S(保存所有)。
- 未打开过的文件不会被加载进编辑器,
Replace All对它们完全无效 - 启用
File > Auto Save并设为afterDelay,可降低漏存风险 - 替换完立刻看 Git 状态,没看到改动,八成是没触发真实写入
正则替换总失败?$1 和 \1 不是一回事
VSCode 用 JavaScript 正则引擎,捕获组引用只认 $1、$2、$&,写 \1 或 ${1} 会静默失效——界面不报错,也不替换,只是原样保留。
- 查
class="([^"]+)",替换填class="$1 is-primary",不是class="\1 is-primary" - 要字面量输出
$1,得写成$$1;$1abc会被截断成$1,后面abc直接丢弃 - 中文括号、全角符号、未转义的
.或/会导致正则静默失效;先关掉.*按钮确认普通文本能搜到,再逐步加正则
真正难的不是写对正则,而是边界控制:比如用 .* 匹配引号内内容,很容易吞掉中间的注释或嵌套结构。这时候宁可用 [^'"]* 或 [\s\S]*?(需开启 ↵ dotAll 模式),比盲目依赖贪婪更可靠。


















