Sublime Text 本身不检查行尾分号,必须通过 SublimeLinter 框架配合 SublimeLinter-eslint(推荐)或 SublimeLinter-jshint 插件实现;需本地或全局安装 ESLint/JSHint、启用 semi/asi 规则、配置 lint_mode 为 "background" 并正确设置 executable 路径,否则无法准确检测该加分号与否。

Sublime Text 本身不检查行尾分号,必须靠插件实现;没有“内置开关”,装错插件或配置不当会导致误报、卡顿甚至不生效。
哪些插件能真正检测 JS 行尾分号
只有 SublimeLinter 配合 eslint 或 jshint 才可靠。直接搜“semicolon”安装的轻量插件(如 TrailingSpaces 或 SemicolonDetector)只能标出结尾有无分号,不能判断“该不该有”——比如 if (x) return y 后面不该加分号,它们也会标红。
-
SublimeLinter是框架,必须额外安装SublimeLinter-eslint(推荐)或SublimeLinter-jshint - 本地项目需存在
.eslintrc.js或.jshintrc,且规则中启用semi(ESLint)或asi(JSHint) - 全局安装
eslint:运行npm install -g eslint,否则插件找不到可执行文件
为什么装了 SublimeLinter-eslint 还不报分号错误
常见原因是 ESLint 规则没开或配置冲突。默认 semi: "error" 要求必须有分号;若想“禁止分号”,得设成 semi: ["error", "never"]。但更关键的是:SublimeLinter 默认只对保存的文件 lint,实时提示需手动开启。
- 打开
Preferences → Package Settings → SublimeLinter → Settings - 确认
"lint_mode": "background"(不是"save") - 检查
"paths"是否包含node_modules/.bin,尤其在使用项目级eslint时 - 如果用 Yarn 2+ 或 pnpm,
eslint可能不在全局路径,建议改用"executable": ["./node_modules/.bin/eslint"]
避免误报:注意作用域和语法差异
ESLint 的 semi 规则对 ASI(自动分号插入)场景有明确豁免,比如 return 换行后紧跟对象字面量会自动插入分号,此时加分号反而报错。但插件不会解释原因,只标红线。
- 箭头函数单表达式体(
x => x + 1)不加分号是合法的,但semi: "always"会报错 - 类方法定义、生成器函数
function*等新语法,老版本eslint( - Vue 单文件组件中的
<script></script>块,需确保SublimeLinter的selector包含source.js.vue
最易被忽略的是:ESLint 配置文件必须放在项目根目录或父级目录,SublimeLinter 不会向上递归查找超过 3 层;如果项目嵌套深,或者用 monorepo 结构,得手动指定 config_path。

















