autofilename在st4中因python版本不兼容而静默失效,需手动替换为github最新版并严格按路径放置;其补全仅在引号内、正确语法、路径前缀、已保存文件四条件满足时触发,且基准路径为当前文件目录。

AutoFileName在ST4里根本没加载,不是配置问题
Sublime Text 4 上从 Package Control 直接安装的 AutoFileName 插件必然静默失效——它用的是 Python 2 的 urllib2,而 ST4 运行在 Python 3.8+ 环境下,启动时直接 ImportError 跳过加载,控制台不报错、状态栏不显示 AutoFileName: enabled、Ctrl+Space 没反应,但 Preferences → Package Settings 里还能看到菜单项,这是最典型的“假安装”。
必须执行以下三步:
- 按
Ctrl+Shift+P输入Package Control: Remove Package,选中并删除已存在的AutoFileName - 去
zhenkyle/AutoFileNameGitHub Releases 页面下载最新版auto_file_name.py(不要解压整个 ZIP,只取这个文件) - 打开
Preferences → Browse Packages…,进入弹出路径,在该目录下新建文件夹,**严格命名为AutoFileName**(大小写敏感),把auto_file_name.py放进去,确保最终路径是Packages/AutoFileName/auto_file_name.py
补全不弹出?检查这四个硬性触发条件
AutoFileName 不是通用字符串补全工具,它只响应明确的路径上下文,缺一不可:
- 光标必须位于未闭合的单引号或双引号内(
'或"),模板字符串(`)和正则字面量(/.../)完全不支持 - 当前文件右下角语法标识必须正确,比如写 CSS 时显示
CSS,不是Plain Text;Vue 文件中<style></style>块需被识别为source.css(可用Tools → Developer → Show Scope Name验证) - 必须有路径语义前缀:如
src=、href=、url(、import "、require('—— 注意括号和引号要连着,url(就够,url("反而可能破坏匹配 - 文件必须已保存(未保存的临时文件无基准路径,插件拒绝工作)
路径基准目录是当前文件所在目录,不是项目根目录
默认行为下,AutoFileName 补全的起点是当前编辑文件的父目录,不是你通过 Project → Add Folder to Project 加入的工作区根目录。这意味着:
-
require('./utils/helper.js')中的./是相对于当前 JS 文件位置,不是src/或app/目录 - 若需跨目录补全(比如从
src/pages/index.html引用assets/logo.png),必须手动输入../assets/或完整相对路径,插件不会自动向上跳级扫描 - 想改基准路径?目前唯一可靠方式是启用
auto_complete_project_path(仅zhenkyle分支支持),在用户设置中加入:{ "auto_complete_project_path": true }但注意:它仍以项目根为起点,且要求项目已添加到工作区,单文件打开无效
索引重建对AutoFileName无效,但它依赖符号索引的底层机制
AutoFileName 自身不建索引,但它调用 Sublime 的文件系统扫描接口获取路径列表。如果整个 Sublime 的文件索引损坏(表现为全局搜索失效、跳转定义失败),AutoFileName 的路径发现也会卡住或返回空结果。
此时需重建 Sublime 原生索引:
- 关闭 Sublime Text
- 删除缓存目录下的
Index文件夹(Windows:%APPDATA%\Sublime Text\Packages\Index;macOS:~/Library/Application Support/Sublime Text/Packages/Index) - 重启 Sublime,等待右下角状态栏出现 “Indexing…” 提示完成
特别注意:别碰 Cache 目录里的插件缓存,那是另一套机制;也别指望重装 AutoFileName 能绕过这个环节——路径补全卡在“找不到任何文件”,大概率是底层索引崩了。











