Sublime Text 默认不带智能提示,需正确安装 Package Control(ST4 专用脚本)、TernJS(配 .tern-project)和 Jinja2(gerard33 版)插件,并手动切换语法为 Jinja2、设置 source.jinja scope,否则 console.log 不补全、{{ user }} 灰白、for 结构不展开。

Sublime Text 默认不带任何语言的智能提示,装错插件或漏掉关键步骤,console.log 不补全、{{ user }} 仍是灰白、for 模板结构不自动展开——这些不是编辑器问题,是插件链没搭对。
Package Control 必须先装,且版本要匹配 ST4
ST4(Build 4100+)用的安装代码和 ST3 不同,粘错会静默失败。控制台(Ctrl+`)里执行前先确认 Sublime 版本:菜单 Help → About。ST4 应该用这段:
import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener(urllib.request.build_opener(urllib.request.ProxyHandler())); by = urllib.request.urlopen('http://packagecontrol.io/'+pf.replace(' ','%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join(ipp, pf), 'wb').write(by)
- 执行后没报错 ≠ 安装成功;重启后菜单
Preferences → Package Control出现才算落地 - 如果
Ctrl+Shift+P输Install Package没反应,说明 Package Control 没加载,检查控制台是否有Unable to load package报错 - Windows 用户若遇
urllib.error.URLError,大概率是系统代理或防火墙拦截,临时关掉再试
JavaScript 提示靠 TernJS,不是 JavaScript Completions
JavaScript Completions 只补 document. 这类固定前缀,不识别变量类型、不跳转定义、不推导 obj.method() 返回值——它只是个词典,不是分析引擎。真要补全函数参数、悬停看类型,必须上 TernJS。
- 装完
TernJS后,需在项目根目录手动建.tern-project文件,否则提示不生效。最简配置:{ "ecmaVersion": 2022, "libs": ["browser", "es2022"] } -
TernJS依赖 Node.js,确保终端能运行node -v;若提示tern not found,运行npm install -g tern - 补全触发默认是
Ctrl+Space,但常被输入法或系统快捷键劫持,可进Preferences → Key Bindings查auto_complete绑定
Jinja2 模板高亮和补全要两步走,缺一不可
只装 Jinja2 插件(作者 gerard33),{{ }} 和 {% %} 能变色,但 {% if %} 不自动展开、{% include "" %} 里路径不补全——因为高亮 ≠ 补全。
- 语法切换必须手动:打开
base.html→ 点右下角HTML→ 选Jinja2(不是HTML (Django),也不是Plain Text) - 路径补全靠
AutoFileName:装完后,{% include "后按Tab或Enter就能列出templates/下所有文件 - 结构补全得自己写 snippet:进
Tools → Developer → New Snippet,填入:<snippet> <content><![CDATA[{% if ${1:condition} %} ${0:${2:body}} {% endif %}]]></content> <tabTrigger>if</tabTrigger> <scope>source.jinja</scope> </snippet>注意<scope>source.jinja</scope>这行不能少,否则在 .html 文件里按if+Tab不触发
装完插件没反应?先查语法 scope 和控制台报错
插件失效最常见原因不是没装,而是 scope 错位或路径冲突。比如 Jinja2 插件要求当前文件语法是 source.jinja,但你点的是 HTML,那再好的插件也白搭。
- 查当前 scope:按
Ctrl+Alt+Shift+P(Windows/Linux)或Cmd+Alt+Shift+P(macOS),状态栏会显示类似source.jinja text.html.jinja的字符串,开头必须含source.jinja或source.js才生效 - 控制台(
Ctrl+`)是第一排查现场:插件加载失败、路径找不到、Python 异常都会直接打在这里,比如Unable to find syntax file Packages/Jinja2/Jinja2.tmLanguage就说明插件文件损坏或安装路径错乱 - 多个模板插件共存(如 Djaneiro + Jinja2)时,禁用一个再测试,避免语法定义互相覆盖

















