ctrl+f是文件内查找,ctrl+h是文件内查找并替换;但需光标在编辑器且非只读状态,跨文件替换须用ctrl+shift+h。

Ctrl+F 和 Ctrl+H 的区别到底在哪
Ctrl+F 是当前文件内查找,Ctrl+H 是当前文件内查找并替换——但很多人按了 Ctrl+H 却没反应,其实是光标没落在编辑器里,或者当前是只读文件(比如 node_modules 下的文件、未保存的临时预览页)。VSCode 不会在只读区域启用替换功能,也不会在侧边栏或设置页响应这两个快捷键。
- 确认焦点在代码编辑区:点一下编辑器空白处再试
- 检查右下角状态栏是否显示
Read-only;若显示,先关闭该文件或用管理员权限打开 VSCode - 如果想跨文件操作,必须用
Ctrl+Shift+H(全局替换),不是 Ctrl+H
全局搜索(Ctrl+Shift+F)为什么搜不到某些文件
默认情况下,VSCode 会跳过 node_modules、.git、dist 等目录,也会忽略 files.exclude 和 search.exclude 配置项中定义的路径。这不是 bug,是设计上的性能保护——否则在大型项目里搜一次可能卡住几秒。
- 搜索框右上角点击
...→ 勾选Include ignored files可临时包含被排除的文件 - 更稳妥的做法是改配置:
"search.exclude": {"**/build/**": true}比默认值更精确,避免误排重要目录 - 注意
files.exclude影响资源管理器显示,search.exclude才真正控制搜索范围,二者不等价
正则替换时 $1 和 ${1} 能混用吗
不能。VSCode 使用 JavaScript 风格的正则替换语法,捕获组引用必须用 、 这种形式。 在 VSCode 里会被当作字面量处理,不会展开为匹配内容——这是和 Node.js 或 sed 的关键差异点。
- 正确写法:
const (\w+) =→ 替换为let $1 = - 错误写法:
let ${1} =(结果会变成字面字符串${1}) - 如果要拼接字符串,用
$1_abc可以,但$10表示第 10 个捕获组,不是$1后跟字符0;不确定数量时建议用$&(整个匹配)或命名组(?<name>...)</name>+$<name></name>
批量替换后怎么快速验证有没有误伤
VSCode 不提供“替换预览”面板,但有隐式回退机制:只要没关掉编辑器标签页,Ctrl+Z 就能逐级撤销所有替换操作(包括跨文件的)。不过一旦保存并关闭文件,就只能靠 Git 恢复了。
- 执行前先
Ctrl+Shift+P→ 输入Git: Diff Active File看当前修改,心里有底 - 对敏感目录(如
src/api/)做替换时,先限定搜索范围:在搜索框底部点击文件夹图标,选中具体文件夹再搜 - 替换完别急着全保存,用
Ctrl+Shift+G打开源码管理视图,逐个查看变更文件,尤其注意 JSON、YAML、HTML 这类结构化文本是否被意外破坏格式
最常被忽略的是:全局替换不会自动触发 ESLint 或 Prettier 重格式化,改完可能直接引入语法错误或风格问题。留个心眼,替换完顺手按一遍 Shift+Alt+F。











