ctrl+shift+h(win/linux)或 cmd+shift+h(macos)是真正跨文件批量替换快捷键,直接打开搜索+替换双栏视图;ctrl+shift+f仅打开纯搜索面板,需手动展开替换框,且默认限于当前文件。

Ctrl+Shift+H(Windows/Linux)或 Cmd+Shift+H(macOS)是真正能跨文件批量替换的快捷键,不是 Ctrl+Shift+F —— 后者只搜不换,必须手动点开替换框才能改。
为什么 Ctrl+Shift+F 按了没反应?
它默认卡在「当前文件」模式,右上角显示灰色文档图标。这不是崩溃,是状态残留。
- 直接再按一次
Ctrl+Shift+F(Win/Linux)或Cmd+Shift+F(macOS),会强制切回全局搜索 - 或点搜索面板右上角 ⋯ → 勾选「在文件中查找」
- Mac 用户若用
Cmd+Alt+F无响应,大概率被系统快捷键拦截(如截图工具),改用Cmd+Shift+H更稳
Ctrl+Shift+H 和 Ctrl+Shift+F 到底怎么选?
Ctrl+Shift+H(Win/Linux)或 Cmd+Shift+H(macOS)一打开就是「搜索 + 替换」双栏视图,省去手动展开步骤;Ctrl+Shift+F 打开的是纯搜索面板,想替换得先点右侧箭头展开替换框。
- 日常重构、变量重命名、路径统一等操作,优先用
Ctrl+Shift+H -
Ctrl+Shift+F更适合只查不换、快速定位、或需要反复调参的探索式搜索 - 两者都支持正则、大小写、全字匹配,但
Ctrl+Shift+H的替换输入框默认聚焦,输完回车就能立即执行 Find All
全局替换后 Git 没变化?你根本没保存
Replace All 只改编辑器内存,不写磁盘。标题栏出现 ● 圆点 ≠ 已保存,必须手动 Ctrl+S(Win/Linux)或 Cmd+S(macOS)才落盘。
- 没打开过的文件不会加载进编辑器,
Replace All对它们完全无效 - 大项目建议开启
File > Auto Save并设为afterDelay,避免漏存 - 替换完立刻看 Git 状态,没看到改动,八成是忘了
Ctrl+S
正则替换总失败?$1 不是 \1,括号必须存在
VSCode 用 JavaScript 正则引擎,捕获组引用只认 $1、$2,写 \1 或 $$1 会静默失效——界面不报错,也不替换,只是原样保留。
- 查
class="([^"]+)",替换填class="$1 is-primary",不是class="\1 is-primary" - 要字面输出
$1,得写成$$1 - 正则里必须有
(...)才有$1,(?:...)是非捕获组,不占编号 - 替换前务必先按
Enter或点Find All,确认高亮结果符合预期——VS Code 不提供预览 diff,误操作无法撤回
最易忽略的一点:全局替换默认扫描整个工作区,包括 node_modules 和 dist。首次使用前,一定先点右上角文件夹图标,在「files to include」里填 src/**/*.ts 这类明确路径,否则搜几分钟还卡在依赖包里。











