sublimelinter-contrib-htmlhint没反应的主因是xg-htmlhint未正确安装或版本不兼容:必须降级至1.0.0版(1.0.1有路径bug),全局安装xg-htmlhint并确保终端可执行,且在sublimelinter设置中显式启用html linter并设lint_mode为background。

Sublime Text 装 sublimeLinter-contrib-htmlhint 后没反应?大概率是链路断在 xg-htmlhint 或版本兼容上,不是插件装错了。
为什么用 sublimeLinter-contrib-htmlhint 而不是其他 HTML linter
它专为 SublimeLinter 3 设计,调用的是 xg-htmlhint(不是原生 htmlhint),后者对自定义规则、HTML5 属性支持更稳。但注意:sublimeLinter-contrib-htmlhint 1.0.1 版本有路径解析 bug,会导致 lint 任务直接跳过——必须降级到 1.0.0。
- 去 GitHub Releases 页面找
sublimelinter-contrib-htmlhint的v1.0.0压缩包(别下 latest) - 解压后重命名为
SublimeLinter-contrib-htmlhint(首字母大写,无空格) - 放进
Packages/目录:菜单 →Preferences → Browse Packages…
xg-htmlhint 必须全局安装且终端可执行
和 jshint、eslint 一样,这个插件不自带 CLI 工具,只调用系统 PATH 里的 xg-htmlhint。如果终端输 xg-htmlhint --version 报 command not found,那 Sublime 就完全不会启动检查。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- 先确认 Node.js 已安装(建议 v14–v20,
xg-htmlhint对 v21+ 支持不稳定) - 运行
npm install -g xg-htmlhint(Windows 请用管理员 CMD;macOS/Linux 若权限报错,别用sudo,改用nvm或 npm 全局路径配置) - 验证:终端执行
xg-htmlhint --version,输出类似2.4.0才算成功
SublimeLinter 设置里要显式启用 HTML lint 模式
即使插件和 CLI 都装好了,Sublime 默认也不会对 .html 文件自动触发 htmlhint,因为 SublimeLinter 默认只监听部分语法类型,且需要明确指定 lint mode。
- 打开
Preferences → Package Settings → SublimeLinter → Settings – User - 确保
"lint_mode": "background"(否则只在保存时检查,体验卡顿) - 加一条
"html": {"@disable": false}到"linters"下(默认可能被设为true) - 如果
xg-htmlhint不在标准 PATH(比如用了nvm或自定义 Node 安装路径),必须配"executable": "/path/to/xg-htmlhint"
常见静默失效的真因和快速验证法
没红点、没提示、右下角显示 HTML 但就是不报错——这不是“没生效”,而是某一层彻底没连上。别靠“已安装”判断,用最小动作验证:
- 打开一个
.html文件,手动写个明显错误,比如<div id="" class="">(重复属性) <li>看左侧行号区是否出现红点;没有?立刻去终端跑 <code>xg-htmlhint test.html,看是否报错 - 如果终端能报错但 Sublime 不报,说明是 PATH 或
executable路径不对;如果终端也报 command not found,回溯xg-htmlhint安装步骤 - 右下角语法显示必须是
HTML(不是Plain Text或Text),可用Ctrl+Shift+P → Set Syntax: HTML强制切换
最常被忽略的是 sublimeLinter-contrib-htmlhint 的版本锁定和 xg-htmlhint 的 Node 版本适配——这两处一错,整个链路就静默中断,连错误日志都不打。










