sublime全局搜索需用ctrl+shift+f(win/linux)或cmd+shift+f(macos),必须处于项目模式(左下角显示路径)、where填“.”、启用正则才能准确定位函数定义等,替换前须人工验证每处结果,避免误删。

Sublime 的全局搜索不能直接“清理”代码,它只负责定位;真正删代码必须手动确认+替换,否则极易误删。所有所谓“一键清理”的说法,都是把风险藏在了没说清的细节里。
Find in Files 是唯一可靠入口,不是 Ctrl+F
想扫整个项目找无用函数、废弃变量或 TODO 注释,必须用 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS),而不是当前文件内的 Ctrl+F。后者只查已打开标签页,对未打开的 utils/ 或 legacy/ 目录完全无效。
- 左下角状态栏必须显示项目路径(如
~/my-app/),否则说明没进项目模式——File → Open Folder…才是正解,Project → Add Folder to Project…不触发索引 - Where 输入框必须填
.(一个英文点),不是空着、不是./、也不是*;否则搜不到子目录下的文件 - 若搜
function oldHelper却没结果,先点右上角.*开正则,再试function\s+oldHelper—— 默认是字符串匹配,不识别空格和换行
精准定位无用代码的关键写法
盲目搜函数名会命中调用处、测试文件、甚至注释,必须靠组合条件缩小范围。以下写法经实测有效:
- 只搜定义位置:
function\s+oldHelper|const\s+oldHelper|export\s+function\s+oldHelper(开启正则 + 大小写敏感) - 排除测试和类型文件:
., -/test/, -/__tests__/ , -/types/, -/node_modules/(逗号后必须空格,每个排除项以/结尾) - 限定文件类型避免干扰:
./src/**/*.ts, ./src/**/*.js(注意双星号才递归,单星号*只匹配当前层) - 搜未被引用的导出:
export\s+\w+\s+oldHelper,再人工检查结果中是否真没 import 它——Sublime 不做引用分析,这点 VS Code 也做不到
替换前必须验证,别信“Find All”数字
Find All 显示 127 处命中?别急着 Replace All。Sublime 不区分上下文,oldHelper 在注释、字符串、正则字面量里也会被算进去。
- 点开每一处结果,看是不是真在函数声明位置;尤其注意
/* oldHelper() */和console.log("oldHelper")这类假阳性 - 想安全删函数体,先搜
function oldHelper.*?{(开启正则 + 点号匹配换行),再手动选中从{到对应}的完整块,按Ctrl+Shift+P输入Expand Selection to Brackets辅助选中 - 如果项目用了 TypeScript,
oldHelper可能只是类型别名,搜type oldHelper =或interface oldHelper单独处理
缓存和索引不清理,搜出来的结果可能过期
改过文件但搜索仍返回旧内容?八成是 Index 目录里的 SQLite 数据库卡住了,或者 Cache 里插件残留了旧解析结果。这不是配置问题,是状态污染。
- 必须同时删掉两个目录:
Cache(存.pyc、.diff)和Index(存全文索引),只删一个没用 - 删之前用任务管理器杀光所有 Sublime 进程(Windows 查
sublime_text.exe和subl.exe,macOS 查Sublime Text及 helper 进程),否则Index文件被锁,删完重启还是卡在 “Searching…” - 重启后先在用户设置里加
"index_files": false,让搜索走实时扫描而非依赖可能损坏的索引——尤其当项目含node_modules时,自动索引常导致漏搜
真正难的从来不是找到代码,而是判断它“无用”。Sublime 不知道你三个月前写的 mockApi 是临时调试还是已被正式替代,也不会提醒你 utils/deepClone 其实被 lodash.cloneDeep 替代了但调用链还在。这些必须靠人眼交叉验证:查 Git 历史、看 CI 日志、翻 PR 描述——搜索只是起点,不是终点。











