ctrl+shift+f打不开首要原因是工作区未加载:若仅打开单个文件(非文件夹),快捷键退化为单文件搜索;右下角显示“no folder opened”即确认未加载项目根目录,必须通过file→open folder…加载整个项目,多根工作区还需确保所有必要文件夹已加入.code-workspace。

Ctrl+Shift+F 打不开?先确认工作区是否已加载
项目上线前做全局检查,第一步就卡在 Ctrl+Shift+F 没反应——大概率是 VSCode 当前没打开文件夹工作区。只用 File → Open File… 打开单个文件时,这个快捷键会退化为单文件搜索,根本不会扫描子目录。
必须通过 File → Open Folder… 加载整个项目根目录。右下角状态栏显示「No folder opened」就是明确信号。另外,如果项目用了多根工作区(.code-workspace),确保所有必要文件夹都已加入,否则搜索范围自动被截断。
搜索中文、硬编码、TODO:用正则精准定位风险点
上线前扫雷重点之一是识别未本地化的中文、写死的 API 地址、临时标记的 TODO 或 FIXME。这些不能靠普通关键词搜,得开正则:
- 中文字符:
[\u4E00-\u9FA5](记得点开搜索框右侧的.*按钮) - HTTP 协议地址:
https?://[^\s"]+,再配合files to include: **/*.js,**/*.ts,**/*.py限定范围 - 注释标记:
\b(TODO|FIXME|HACK)\b,启用Match Whole Word避免匹配到变量名里带 todo 的情况
注意:默认情况下 .gitignore 里的路径(如 node_modules、dist)会被跳过,这反而是好事;但若想检查打包产物里是否混入了调试代码,需手动关掉设置 search.useIgnoreFiles。
替换敏感配置前,务必验证作用域和大小写
上线前批量替换密钥、域名、环境标识时,Ctrl+Shift+H(全局替换)比逐个改安全,但极易误伤:
- 不勾选
Match Case可能把API_URL和api_url一起替掉,而后者可能是合法变量名 - 不勾选
Match Whole Word可能将prod替换进production,变成stagingction - 忘记填
files to include,结果把package-lock.json或go.sum也改了,导致构建失败
建议流程:先用 Ctrl+Shift+F 搜一遍确认命中范围,再切到替换面板,逐项核对「是否全词」「是否区分大小写」「是否限定后缀」,最后点「Replace All」前再点一次「Replace in Files」旁的小箭头展开预览。
依赖包名搜索要防“假阳性”,优先看 import 行
查某个依赖(比如 lodash)是否被实际引用,不能只搜包名——它可能出现在注释、字符串或变量名里。更可靠的方式是直接搜 import 模式:
-
import.*lodash(JS/TS) -
from.*lodash或import.*lodash(Python) -
require\(["']lodash["']\)(兼容旧写法)
同时在 files to include 填 **/*.js,**/*.ts,**/*.py,排除配置文件和测试桩。如果搜不到但 package.json 里有,说明该依赖可能已废弃,正好上线前清理掉。
复杂点在于动态引入(import(…)、require.resolve)和 bundle 后的代码,这些无法被文本搜索覆盖,需要结合构建产物分析或运行时检测——但那是部署阶段的事了,VSCode 搜索只管源码层。











