Sublime Text原生拼写检查不区分代码结构,开启spell_check会导致变量名、字符串等全被扫描标红;唯一可靠启用方式是在语法专属设置中配置正确dictionary路径,并以状态栏显示“Spell Check”为生效依据。

Sublime Text 原生不支持“代码拼写检查”——它没有注释/字符串/变量名的语义区分能力,spell_check 一开就是全文本扫描,recieveData 和 teh_api 都会被标红。所谓“代码中检查拼写”,实际只能是“在代码文件里启用拼写检查”,而这不是推荐做法。
为什么在 .py 或 .js 文件里开 spell_check 会满屏标红
原生拼写检查不识别语法结构,只按 Unicode 字符块切分单词,然后查词典。这意味着:
-
def initalize_user():→initalize不在词典里,标红 -
user_data = {"recieve": True}→recieve和recieve(key)都标红 -
"""This is a sentance."""→sentance标红,但多行字符串中间混着if x == 1:也会被当单词扫 - 右键选
Add to Dictionary会把initalize_user整个加进词典,下次真拼错initialize就再也看不到了
想只检查 Python/JS 注释?别碰 spelling_selector
spelling_selector 是个 CSS-like 作用域过滤器,不是语法分析器。设成 "comment" 看似合理,但实际效果极差:
- 单行注释
# this is wong可能命中,但"""docstring with wong word"""常被跳过 - JS 中
// comment有时生效,/* block comment */常失效 - 无法排除字符串字面量:
console.log("wong"); // this is wrong→ 两个wong都标红 - 没有 fallback 机制:路径错、作用域名拼错、语法包覆盖设置,全部静默失败
真正可用的方案:用 Spell Check Comments 插件
它专为这个场景设计,不改原生逻辑,只劫持拼写触发时机:
- 通过 Package Control 安装
Spell Check Comments - 确保你已在 Markdown/Plain Text 等语法中启用了
spell_check: true(插件依赖此开关) - 插件自动识别主流注释语法:
#、//、/* */、"""、'''、<!-- --> - 严格排除字符串、正则字面量、JSON key 等非自然语言区域
- 右键建议词、
Add to Dictionary仍可用,且只作用于注释内容
词典路径写错 = 功能白配
所有配置里最常出问题的是 dictionary 值。Sublime 不报错、不提示、不 fallback,只默默不加载词典:
- 正确路径(大小写、空格、斜杠方向全敏感):
"Packages/Language - English/en_US.dic" - 常见错误写法:
"en_US.dic"、"Packages/Language - English/dictionaries/en_US.dic"(多了一级dictionaries/)、"Packages/Language - English/en_US"(缺后缀) - 验证方法:菜单
Preferences → Browse Packages…→ 进入Language - English/目录,确认存在en_US.dic(不是.aff或其他后缀) - macOS 权限受限时,可复制
en_US.dic到Packages/User/,再设为"Packages/User/en_US.dic"
拼写检查是否生效,唯一可信信号是状态栏右下角出现 Spell Check 字样;它只在当前语法匹配设置时才显示,和文件后缀无关,和你是否刚保存设置也无关——只和 Sublime 当前认定的“这段文本归哪类语法管”有关。

















