sublime自动补全分三类:当前文件单词、跨文件字符串(allautocomplete)、语义补全(lsp-pyright),需分别配置插件;allautocomplete默认不响应ctrl+space,仅在光标位于单词中/末时自动触发;失效主因包括配置键名错误、文件未打开、语法识别失败、文件过大;lsp-pyright替代已停更的sublimecodeintel,需启用并禁用anaconda;autofilename_st4在st4静默失效,须卸载重装适配分支;docblockr需正确语法识别、光标位置及user设置jsdocs_extra_tags;所有补全依赖已打开文件和准确语法识别。

Sublime 的自动补全不是装一个插件就“全局智能”了,它分三类场景:当前文件单词匹配、跨文件字符串补全、带函数签名和跳转的语义补全——每种都得配对插件,且容易因配置错位或环境冲突彻底失效。
AllAutocomplete 跨文件补全为什么 Ctrl+Space 没反应
它默认不接管快捷键,也不强制弹窗,只在光标停在单词中间或末尾(如 user_l|)时半秒后自动触发。常见失效原因:
- 配置项写错:
"all_autocomplete": true是唯一有效键名,enabled、global_enabled、all_autocomplete_enabled全无效 - 文件没打开:目标变量只存在于磁盘上未打开的
utils.py里?AllAutocomplete 看不见 - 语法识别失败:右下角显示
Plain Text,哪怕文件是.py后缀也白搭;必须是Python或JavaScript - 文件超大:默认跳过 >1MB 的已打开文件,关掉大文件标签页反而补全更快
LSP-pyright 实现函数签名和跳转定义
原生补全和 AllAutocomplete 都不解析 AST,要看到 def login(user: User) -> bool: 这类提示,必须走 LSP 路线:
- 别装
SublimeCodeIntel:已停止维护,Python 3.11+ 下常卡死,且和 LSP 插件争抢服务 - 推荐
LSP-pyright:自带 pyright 下载逻辑,不用手动填command路径;安装后需确认Preferences → Package Settings → LSP-pyright → Settings – User里没禁用"enabled" - 关掉 Anaconda:如果同时启用,两者会冲突,导致悬停无 docstring、跳转失败、CPU 占用飙升
- Python 解释器路径必须显式指定:Anaconda 插件要求
python_interpreter指向真实可执行文件(如/opt/homebrew/bin/python3),不能是软链接
AutoFileName_ST4 路径补全在 ST4 上静默失效
Package Control 安装的原版 AutoFileName 在 Sublime Text 4 上根本不会加载——没报错、不提示、状态栏也不显示 AutoFileName: enabled,但 Preferences → Package Settings 里却有条目,极具迷惑性。
- 必须卸载旧版:
Ctrl+Shift+P→Package Control: Remove Package→ 选AutoFileName - 手动装适配分支:去 GitHub Releases 下载
auto_file_name.py,放进Packages/AutoFileName/目录(注意文件夹名必须是AutoFileName,不是AutoFileName_ST4) - 触发条件极严格:光标必须在未闭合英文引号内(
src="|✅,src=|❌),且当前语法识别为CSS、HTML或带source.cssscope 的<style></style>块 - 基准路径是当前文件所在目录,不是项目根;想从根开始补全,得加配置
"auto_complete_project_path": true
DocBlockr 注释模板自定义但不生效
装完插件后,在函数前输入 /** 回车没反应,大概率是语法识别或触发位置不对:
- 必须在支持语言的代码块内:JS/TS/PHP 文件里有效,
Plain Text或Markdown里不触发 - 光标必须紧贴函数声明上方:比如
function getUser() {正上方一行,不能隔空行或缩进错位 - 自定义字段写在
Settings – User里,不是Settings – Default;键名是"jsdocs_extra_tags",值为数组,如["@author me", "@date {{date}}"] - 日期格式变量用
{{date}},不是${date}或{{datetime}}(后者是 DocBlockr 的旧写法,新版已弃用)
所有补全类插件都依赖“已打开的文件”和“正确语法识别”,这两点卡住就全盘失效;而 ST4 对 Python 3 API 的变更让很多老插件必须手动替换文件才能跑起来——不是配置问题,是底层加载机制变了。











