autofilename是sublime中唯一能实现磁盘路径自动补全的插件,因原生及lsp、emmet等均无法读取文件系统;它需正确配置触发规则、项目根目录和相对路径前缀(如./)才能生效。

AutoFileName 插件是 Sublime 实现文件路径自动补全的唯一可靠方案,原生不支持、其他插件(如 Emmet 或 LSP)无法替代它。
为什么必须装 AutoFileName 而不是靠 LSP 或 snippets
Sublime 的 auto_complete 机制默认只索引当前文件单词和打开的标签页名,对磁盘路径完全无感知。LSP 插件专注语言语义(函数签名、类型推导),sublime-completions 文件只能做静态文本替换——二者都读不到 ./assets/img/logo.png 这类相对路径。AutoFileName 是唯一专为路径设计的插件,它会实时扫描项目目录树,并在 url(、import、require(、src= 等上下文中动态列出可选路径。
常见误判点:
- 装了 LSP-pyright 但 Python 里
from mypkg import没路径提示?这不是 LSP 的职责,那是include_imports和解释器路径的事 - 手动建了个
paths.sublime-completions放一堆./css/前缀?它只会原样补全,不会自动展开子目录,也不能识别当前文件位置 - 以为 Emmet 的
img[src=]能补路径?Emmet 只展开 HTML 结构,不读文件系统
安装与基础触发配置
AutoFileName 安装后默认不自动弹出,需手动配触发规则:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Package Control: Install Package,搜索并安装AutoFileName - 打开
Preferences → Settings,在右侧用户设置中加入:
{
"auto_complete_triggers": [
{"selector": "source.css", "characters": "url("},
{"selector": "source.js", "characters": "import"},
{"selector": "text.html.basic", "characters": "src=\""}
]
}
注意:characters 是“输入到这些字符时立刻触发”,不是“匹配这些字符串”。所以写 "url(" 就够,不用写 "url(\"";写 "src=\"" 是因为 HTML 中实际输入的是双引号开头的属性值。
路径补全不准或不出现的三个硬性条件
AutoFileName 不工作,90% 是卡在这三处:
-
当前文件语法必须正确:右下角状态栏显示CSS,不是Plain Text;Vue 文件里<style></style>块要能被识别为source.css(用Tools → Developer → Show Scope Name验证光标处 scope) -
项目根目录必须打开:菜单Project → Add Folder to Project添加整个项目文件夹,否则插件只看到单个文件,无法遍历./images/下的文件 -
路径必须相对且可解析:补全只响应以./、../或/开头的路径片段;如果写img/logo.png(无点斜杠),插件认为这是普通单词,直接跳过
进阶:排除干扰路径与自定义快捷前缀
默认行为会把 node_modules/、.git/ 全列出来,影响效率。可在用户设置中加过滤:
{
"auto_filename_ignore": [".git", "node_modules", "__pycache__"],
"auto_filename_exclude_extensions": ["log", "tmp"]
}
还想快速输入常用路径?比如输 ~img 补全成 ./assets/images/,得配合 snippet:
- 菜单
Tools → Developer → New Snippet… - 填入内容,保存为
Packages/User/img.sublime-snippet:
<snippet><content></content><tabtrigger>~img</tabtrigger><scope>source.css, source.js, text.html.basic</scope></snippet>
注意:tabTrigger 必须全小写、无空格、不重复;scope 要覆盖你希望生效的语法类型,否则 Tab 键按了也没反应。
真正卡住的往往不是插件没装,而是项目没加进 workspace、语法 scope 没对上、或者路径开头缺了 ./ —— 这些细节不检查,装十次 AutoFileName 都白搭。











