atom项目全局搜索唯一入口是ctrl+shift+f(win/linux)或cmd+shift+f(macos),右键“search directory”仅限单目录;正则替换必须用$1而非\1;搜索范围受.gitignore和core.ignorednames双重过滤。

Atom 的查找替换不是“点开就能用”的功能,它有三套独立逻辑:单文件、项目级、Vim 模式,用错入口就找不到目标——尤其新手常以为右键项目名能全局搜,其实根本没这功能。
Ctrl+Shift+F 才是项目全局搜索的唯一入口
右键项目根目录 → “Search Directory”只扫当前文件夹,不会递归进 src/、lib/;真正全项目扫描必须用快捷键:Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)。
- 必须先通过
File > Add Project Folder打开完整项目,只打开几个文件不算“项目” - 面板左上角显示的路径必须是你预期的根目录,否则搜索范围不对
-
File/Directory pattern输入框默认是**,如果手动填过*.js就只会扫 JS 文件——删掉它才能覆盖所有类型 - 右下角勾选
Only in open files会限制为已打开的标签页,一不留神就漏改
正则开关不点亮,写啥都是纯文本
查找面板里右下角那个 .* 图标必须点亮,否则 \d+、foo.*bar 全部按字面匹配。Mac 用户别依赖 Cmd+Alt+F 切换,键盘冲突太常见,每次打开都手动点一次最稳。
- 开启后才能用
^、$、\s、(foo|bar)等语法 -
.默认不匹配换行符,跨行得用[\w\W]或[^],[\s\S]在 Atom 里实测不可靠 - 贪婪匹配如
/*[\w\W]*/*容易回溯爆炸,优先写成/*[\w\W]*?*/
替换时写 \1 就是自找麻烦
Atom 用 JavaScript 正则引擎,捕获组引用必须是 $1、$2,写 \1 不报错但直接输出字面量 \1,结果变成一堆奇怪字符串。
- 查找:
(console\.log)\(([^)]+)\)→ 替换:debug('%s', $2),其中$1是console.log,$2是括号内表达式 - 最多支持
$0~$9,没有$10 - HTML 属性值替换如
alt="(.*)"→alt="c-$1",引号不用转义,转义反而可能破坏括号配对
搜不到文件?先看 .gitignore 和 core.ignoredNames
Atom 默认跳过 .gitignore 里的路径,还会额外读取 core.ignoredNames 配置(比如 node_modules、dist),你搜不到某个文件,大概率不是 Atom 没扫到,而是它被主动过滤了。
- 检查
Settings > Packages > find-and-replace,确认Use ripgrep已勾选 - 终端执行
rg --version看系统是否装了ripgrep,没装时 Atom 会 fallback 到慢得多的 scandal 实现 - 临时禁用其他搜索插件(如
project-find-plus),避免底层冲突
最易忽略的一点:项目搜索不提供替换预览,Replace All 是直写磁盘的,出错只能靠 Ctrl+Z 撤回——而且仅限当前文件,跨文件误操作无法批量撤回。










