autocomplete-paths 支持本地路径自动补全,但仅限 projecthome 目录下一级的文件和文件夹,不递归子目录;仅对 src、href 等特定属性生效,且要求 grammar 为 text.html.basic 等有效 scope。

autocomplete-paths 插件是否支持本地路径自动补全
支持,但仅限项目根目录下一级的文件和文件夹。它不是“全路径扫描器”,而是基于当前 projectHome 配置做浅层枚举。
常见错误现象:在 src="assets/images/icon.png" 中输入 assets/ 后没提示 images/,或输入 images/ 后没提示 icon.png。
- autocomplete-paths 默认不递归子目录 —— 这是设计行为,不是 bug
- 它只对特定 HTML/CSS/JS 属性生效:
src、href、data-src、background等,写custom-path="./xxx"不会触发 - 右下角状态栏 grammar 必须是
text.html.basic或source.css等有效 scope,不能是text.plain - 若装了
emerald-html或多个 language-* 插件,可能因语法作用域冲突导致 provider 不激活
如何让 autocomplete-paths 补全嵌套路径(如 assets/images/)
靠改 core.projectHome 配置,把 projectHome 指向含资源的父级目录,而非项目根目录本身。
例如你项目结构是:
/Users/me/my-website/
├── index.html
└── assets/
└── images/
└── logo.png
但 autocomplete-paths 仍不补全 images/,说明它当前扫描的是 /Users/me/my-website/ 下的直接子项(即只有 index.html 和 assets/),而不会进 assets/ 再看里面有什么。
- 打开
~/.atom/config.cson,添加或修改:core:<br> projectHome: "/Users/me/my-website/assets"
- 重启 Atom 或执行
Window: Reload - 此时在
src="images/..."中输入images/就能补全logo.png了 - 注意:改完
projectHome后,HTML 中的相对路径需同步调整,比如原src="assets/images/logo.png"要改成src="images/logo.png"
autocomplete-paths 不生效的三个硬性检查点
它不像语言补全那样依赖 provider 加载顺序,失效往往卡在基础链路上。
- 确认当前文件 grammar 正确:右下角显示必须是
text.html.basic(HTML)、source.css(CSS)或source.js(JS),不是text.plain或text.xml - 检查插件启用状态:Settings → Packages → 搜索
autocomplete-paths→ 确保是 “Enabled”(蓝色),不是灰色 “Install” - 排除 scope 冲突:禁用所有名字含
emerald、language-babel、html-preview的插件再试;language-babel会覆盖text.html.basicscope,导致路径提供者静默掉线
比 autocomplete-paths 更适合现代前端项目的替代方案
如果你用 Vue、React、Webpack 别名(如 @/components)或 TypeScript 路径映射,autocomplete-paths 基本失效 —— 它不解析 jsconfig.json 或 tsconfig.json,也不理解构建时路径重写逻辑。
- Vue 项目优先用
atom-vue+ide-vue,后者通过 Vetur 提供带别名感知的路径补全 - React/TS 项目建议上
atom-ide-ui+ide-typescript,配置"baseUrl": "src"和"paths"后可补全import Button from "@/ui/Button" - 纯静态站点且路径简单,坚持用
autocomplete-paths反而更轻量;加一层 LSP 就像为自行车装涡轮增压 —— 有需求才值得
真正容易被忽略的是:路径补全 ≠ 运行时路径正确。补全出来的 src="assets/img/logo.png" 在 live-server 里 404,大概率是你没确认浏览器 Network 面板中请求的真实 URL,而不是插件没补全对。











