Sublime Text 4 上原版 AutoFileName 必然失效,必须手动安装 zhenkyle 或 BoundInCode 的适配分支;严格按路径、文件夹名(AutoFileName)、auto_file_name.py 位置三步配置,并检查光标在未闭合引号内、语法识别正确、触发前缀匹配、文件已保存四条件。

Sublime Text 4 上直接从 Package Control 安装 AutoFileName 必然失效——它根本没加载,不是配置问题,是 Python 3.8+ 和新 API 兼容性断层导致的静默失败。
装错版本:Package Control 里搜到的全是 ST3 旧版
你看到 Preferences → Package Settings 里有 AutoFileName 菜单项,不代表插件在运行。按 Ctrl+Shift+P 输入 Package Control: List Packages,如果列表里没有 AutoFileName,就等于没装上。
- 原版已停更,代码含
urllib2(Python 2 模块),ST4 启动时直接 ImportError 或静默跳过 - 控制台不报错、状态栏不显示
AutoFileName: enabled、Ctrl+Space没反应——全是“没加载”的典型症状 - 必须卸载旧版:
Package Control: Remove Package→ 选中并删除AutoFileName - 目前真正可用的分支只有两个:
zhenkyle/AutoFileName(功能全,支持别名映射)和BoundInCode/AutoFileName_ST4(轻量,只修复兼容性)
手动安装三要素:路径、文件夹名、主文件位置
插件不会自动识别你拖进 Packages 的任意文件夹。它对结构极其敏感,错一个字符就静默失效。
- 打开
Preferences → Browse Packages…,记下弹出路径(如~/Library/Application Support/Sublime Text/Packages) - 在该目录下新建文件夹,**严格命名为
AutoFileName**(注意大小写,不能是autofilename、AutoFileName_ST4或带版本号) - 去对应 GitHub Releases 页面下载最新
auto_file_name.py(zhenkyle版直接解压取文件;BoundInCode版只取单个.py文件) - 把
auto_file_name.py放进Packages/AutoFileName/,确保最终路径是Packages/AutoFileName/auto_file_name.py - 重启 Sublime,或在控制台(
Ctrl+`)执行sublime_plugin.reload_plugin("AutoFileName.auto_file_name")
补全不触发?检查这四个硬条件
AutoFileName 不是字符串补全工具,它只响应“明确要填路径”的上下文,且每个条件都必须满足。
- 光标必须在**未闭合的英文引号内**:
src="|✅,src=|❌,src="logo.png"(已写完)也不触发 - 当前文件语法必须被识别为路径支持类型:右下角显示
HTML、CSS、JavaScript或Vue,不能是Plain Text;Vue中<style></style>块需有source.cssscope(用Tools → Developer → Show Scope Name验证) - 触发前缀必须匹配预设规则:
src=、href=、url(、import '、require("—— 注意括号和引号要连着写,url(就够,不用url(") - 文件必须已保存(未保存的临时文件无基准路径)
路径补全基准总是错?别指望它自动猜项目根
默认以**当前文件所在目录**为起点,不是你通过 Project → Add Folder to Project 加入的项目根目录。比如 src/pages/Home.js 里写 import,补全范围默认只扫 src/pages/ 下的子目录。
- 想从项目根开始补全:在用户设置中加
"auto_complete_project_path": true(仅zhenkyle分支支持) - 或在项目根放一个空的
.project文件(部分 fork 识别) - 别名路径(如
@/components/)需手动映射:"auto_filename_alias_map": { "@": "src" } - 斜杠方向错误(Windows 补全出反斜杠)?加
"use_forward_slash": true即可 - 大项目卡顿?关掉深度扫描:
"recursive": false,再配"excluded_folders": ["node_modules", ".git", "dist"]
最容易被忽略的是:插件是否真在运行,以及当前作用域是否被识别为路径相关。很多“不生效”其实发生在第一步——你以为装上了,其实 Package Control: List Packages 里压根没有它。











