atom全局搜索需手动配置core.ignorednames和core.excludevcsignoredpaths并重启才生效,二者缺一不可;.atomignore优先级最高且免重启。

Atom 全局搜索默认不跳过 node_modules、dist、build 这类目录,搜出来几万条结果不是因为引擎慢,而是它真在挨个扫——必须手动配两处开关并重启,缺一不可。
core.ignoredNames 必须显式添加目录名
这个配置是 Atom 唯一认的“全局忽略名单”,和 .gitignore 完全无关。它只匹配**精确名称**,不支持通配符或路径:
-
"node_modules"✅ 匹配同名文件夹(注意不带斜杠) -
"dist"✅ 匹配名为dist的文件夹 -
"*.log"❌ 无效,Atom 会直接忽略整行甚至启动失败 -
".log"✅ 匹配所有叫.log的文件(但不匹配error.log) - 格式必须是合法 JSON 数组:
[".git", "node_modules", "dist", ".DS_Store"],每个字符串用英文双引号,逗号后带空格
core.excludeVcsIgnoredPaths 必须开启
这个开关控制 Atom 是否读取项目里的 .gitignore——但它只影响搜索(Ctrl+Shift+F),不影响树视图显示:
- 默认是开启状态(勾选),但如果你关过,就得手动再勾上
- 仅当项目根目录存在
.git文件夹时才生效;纯文件夹项目或 Mercurial 仓库里,它完全不干活 - 即使你没在
core.ignoredNames里写node_modules,只要.gitignore有这一行且此开关开启,搜索就会跳过它 - 改完必须重启 Atom,热重载不生效
File/directory pattern 留空才是全量扫描
这个输入框在 Find in Project 面板右上角,它不是“可选过滤”,而是硬性白名单:
- 留空(连空格都不能有)→ 按
core.ignoredNames和.gitignore规则扫描全部文件 - 填了
src/**/*.js→ 只扫匹配的 JS 文件,其他后缀一律消失 - 误填
./src→ Atom 当作“仅本层”,不会进src/utils - 填
!node_modules❌ 不推荐,ripgrep 对负向 glob 支持不稳定,不如靠前两步稳
.atomignore 是最可靠、免重启的方案
在项目根目录新建 .atomignore,内容支持完整 glob 语法,优先级最高,Atom 启动即加载:
node_modules/ dist/ *.log *.tmp
注意:
- 末尾加
/表示目录(node_modules/有效,node_modules可能匹配同名文件) - 支持
**递归(**/*.log可用,这在core.ignoredNames里做不到) - 不依赖 Git,没
.git也能用 - 改完不用重启,但需确保
core.excludeVcsIgnoredPaths和core.ignoredNames没冲突(比如.atomignore已写dist/,就别在core.ignoredNames里重复加"dist")
真正容易被忽略的是:搜索过滤、树视图隐藏、文件打开行为,三者由完全独立的配置控制。比如你清空了 core.ignoredNames,但 tree-view 插件仍可能因 hideVcsIgnoredFiles: true 把 dist 隐藏掉——它根本不管编辑器级的忽略设置。











