ctrl+shift+f(windows/linux)或cmd+shift+f(macos)是vscode全局搜索唯一快捷键,仅此组合支持跨文件搜索;ctrl+f仅限当前文件,且搜索面板不记忆上次视图状态。

Ctrl+Shift+F 是唯一生效的全局搜索快捷键
VSCode 没有“多个等效快捷键”支持全局文本搜索,Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)是官方唯一绑定的入口。很多人按 Ctrl+F 想搜整个项目,结果只在当前文件里打转——它压根不跨文件。
常见失效场景包括:
- 焦点卡在终端或调试控制台(右下角状态栏显示
TERMINAL或DEBUG CONSOLE),先按Ctrl+`切出来再试 - 中文输入法激活时,部分键盘布局会吞掉组合键,切英文输入法再按
- 插件冲突极少见,但可通过命令面板运行
Preferences: Open Keyboard Shortcuts (JSON)检查是否有自定义覆盖
全局替换必须手动展开 Replace 区域
输完关键词按回车,只会执行搜索;不会自动进入替换流程。替换功能默认隐藏,必须主动展开:
- 点击搜索面板下方的
Replace标签 - 或用快捷键
Alt+R(Windows/Linux)/Option+R(macOS)
不展开就点“全部替换”,界面上根本不会出现替换按钮。逐个替换更安全:每个匹配项右侧都有独立的 Replace 按钮,适合跨文件谨慎修改。
注意:“全部替换”会跳过只读文件、未保存的临时文件,也会跳过被排除在工作区外的路径。
文件筛选框不支持嵌套通配符,但支持逗号分隔
路径过滤必须填在“包含文件夹”或“排除文件夹”框里,不能塞进主搜索框。常见误区是写 src/**/utils/**——这种嵌套写法不被识别,ripgrep 只认扁平化 glob 模式。
正确写法示例:
-
src/**:匹配src下所有子目录(含src/components、src/api) -
*.vue,*.ts:逗号分隔多扩展名,空格会被忽略 -
ext:.vue:比*.vue更明确,兼容 VSCode 1.85+ -
!node_modules/**:排除node_modules,但需确认没被search.exclude重复定义
想只搜 Vue 组件里的 MyDialog,推荐填:MyDialog ext:.vue,而不是靠正则硬套路径。
正则替换中 $& 和 $$& 容易混淆
启用 .* 按钮后,替换字段里写 $& 表示插入原匹配内容;写 $$& 才能输出字面量 $ 加原文——这是最常翻车的地方。
例如:
- 搜索
\d+,想给所有数字加前缀$,替换必须写$$& - 写成
$&会导致空替换或报错,因为$&被解释为“插入匹配内容”,而$单独出现是非法转义 -
\s+$匹配行尾空白,替换留空可清理空格,但注意它不处理制表符,要加\t才完整
真正容易被忽略的是:快捷键不保存“上次打开哪个视图”的记忆,每次按 Ctrl+Shift+F 都只管 Search 面板是否启用、是否可见、是否可聚焦——不关心你上一秒在干嘛。











