Sublime Text 4 上原版 AutoFileName 插件因 Python 3.8+ 和 API 变更无法运行,必须卸载旧版后手动安装 zhenkyle 或 BoundInCode 的适配分支,严格按路径、命名、文件位置配置,并在用户设置中启用关键选项。

Sublime Text 4 上原装的 AutoFileName 插件根本不会运行——它不是“配置错了”,而是被 Python 3.8+ 和新 API 直接拒载,连错误都不报,状态栏也不显示 AutoFileName: enabled。能用的只有两个社区适配分支,且必须手动安装。
必须卸载旧版 + 手动装 zhenkyle 或 BoundInCode 分支
Package Control 里搜到的 AutoFileName 是 ST3 旧版,Python 2 代码在 ST4 中加载失败,常见控制台报错:ImportError: No module named 'urllib2' 或静默不出现。你看到菜单项存在 ≠ 插件在跑。
- 先按
Ctrl+Shift+P→ 输入Package Control: Remove Package→ 选中并删掉已有的AutoFileName - 去 GitHub 下载适配 ST4 的
auto_file_name.py:推荐 zhenkyle/AutoFileName(功能全,支持项目根路径补全)或 BoundInCode/AutoFileName_ST4(轻量,只修兼容性) - 打开
Preferences → Browse Packages…,进入用户Packages目录,在里面新建文件夹,严格命名为AutoFileName(不能带下划线、不能是autofilename或AutoFileName_ST4) - 把下载的
auto_file_name.py放进该文件夹,确保最终路径是Packages/AutoFileName/auto_file_name.py - 重启 Sublime,或在控制台执行
sublime_plugin.reload_plugin("AutoFileName.auto_file_name")
补全不弹?检查光标位置、语法识别、触发前缀三硬条件
AutoFileName 不是字符串补全工具,它只响应“明显要填路径”的上下文,缺一不可。
- 光标必须在未闭合的英文引号内:
src="|"✅,src=|❌,src="logo.png"|❌(引号已闭合) - 当前文件语法必须被识别为路径相关类型:右下角显示
CSS、HTML、JavaScript或source.css等,不能是Plain Text;Vue 文件中<style>块需验证 scope 含source.css(用Tools → Developer → Show Scope Name) - 必须有预设的路径语义前缀:默认支持
src="、href="、url(、import '、require(";但console.log("assets/");或class="foo"不触发 - JS/TS 模板字符串(反引号)和正则字面量完全不支持
路径基准是当前文件目录,不是项目根目录
默认情况下,AutoFileName 以当前文件所在目录为起点扫描子目录,不是你通过 Project → Add Folder to Project 加入的根目录。比如你在 src/pages/Home.js 里写 import,它只列出 src/pages/ 下的文件,不会自动跳到 src/assets/。
- 想从项目根开始补全,需在用户设置中加:
"auto_complete_project_path": true(仅zhenkyle分支等少数版本支持) - 或者在项目根目录放一个空的
.project文件(部分 fork 会识别) - 别指望它自动理解
src/或public/是“逻辑根”——它没有结构语义,纯靠文件系统路径计算
补全卡顿、漏路径?调 excluded_folders 和 recursive
默认递归扫描当前文件所在目录全部子目录,遇到 node_modules、.git、dist 就容易卡住甚至漏结果。
- 在
Preferences → Package Settings → AutoFileName → Settings – User中添加: "excluded_folders": ["node_modules", ".git", "dist"]-
"recursive": false(关闭递归,只扫当前层;或设为数字如3限制深度) -
"use_forward_slash": true(避免 Windows 路径反斜杠引发解析问题)
最常被忽略的是:插件没加载成功时,所有配置都白搭;而它失败时既不报错也不提示。确认是否生效,唯一可靠方式是执行 Package Control: List Packages,看列表里有没有 AutoFileName —— 没有,就等于没跑起来。


















