ctrl+shift+h(windows/linux)或cmd+shift+h(macos)是vscode唯一全局替换快捷键,需手动展开replace区域、启用正则、正确设置文件范围并重新扫描才能生效。

Ctrl+Shift+H 是 Windows/Linux 和 macOS 的唯一全局替换快捷键
VSCode 官方只绑定了一组快捷键用于全局替换:Ctrl+Shift+H(Windows/Linux)或 Cmd+Shift+H(macOS)。它不是“等效组合”,也没有备用键——按其他组合(比如 Ctrl+H 或 Cmd+Option+F)只会打开当前文件替换面板,不会扫描整个工作区。
常见误操作包括:
- 以为
Ctrl+F能全局搜——其实它只在当前文件生效,且焦点必须在编辑器内(终端/调试控制台里按无效) - Mac 用户记成
Cmd+Alt+F——物理上没错,但 VSCode 文档和设置里统一写作Cmd+Option+F,Alt键就是Option,别被键盘标注误导 - 外接非美式键盘(如日文、德文)时,
Cmd+Shift+H可能需加Fn才触发,试试Fn+Cmd+Shift+H
全局替换前必须手动展开 Replace 区域
按下 Ctrl+Shift+H 或 Cmd+Shift+H 后,你看到的是一个「搜索」视图,默认不显示替换框。很多人输完词按回车,结果只搜不换——因为替换功能是隐藏的,必须主动展开:
- 点击搜索面板下方的 Replace 标签页
- 或用快捷键:
Alt+R(Windows/Linux)、Option+R(macOS) - 不展开就点“全部替换”,界面上根本不会出现该按钮
这个动作不能跳过。VSCode 不会自动把搜索结果转为可替换状态,它严格区分“查”和“换”两个阶段。
正则模式启用必须点 .* 或用快捷键,不能靠猜测
想用 \bfoo\b 或 import\s+(\w+)\s+from 这类正则?光写对表达式没用,必须显式启用正则引擎:
- 点击搜索框右侧的
.*图标(变蓝即生效),或按Alt+R(Win/Linux)、Cmd+R(macOS) -
Aa(大小写)和\(全字匹配)按钮会覆盖正则状态——哪怕.*图标亮着,点了它们也会关掉正则 - JS 正则语法限制明确:
\K、(?i)、\R全部不支持,写了就静默失败 - 替换字段只认
$1、$2、$&;\1当普通文本处理,${1}直接报错
文件范围筛选不支持嵌套通配符,但逗号分隔有效
想只改 src/components/** 下的 .vue 文件?别写 src/**/components/**/*.vue——VSCode 不识别多层 ** 嵌套:
- 合法写法:
src/components/**,*.vue或ext:.vue(推荐,更明确) - 多个条件用英文逗号分隔,空格会被忽略:
*.ts, *.js和*.ts,*.js效果一样 - 路径过滤必须填在“files to include”框里,不能塞进主搜索框;填错位置等于没设
- 没设范围就点“全部替换”,默认扫整个工作区——
node_modules、dist、.git全中招
真正容易被忽略的是:全局替换不会实时刷新匹配项。你改了文件范围或正则,必须手动点“Find All”重新扫描,否则“全部替换”只作用于旧的高亮结果——这点不像单文件替换那么直觉,但决定成败。











