autosemicolon 在 sublime text 4 中无法运行,因其自2017年起停止维护,依赖已移除的 st3 api 和 python 3.3,与 st4 的 python 3.8+ 及 api v2 不兼容,强行安装将导致插件失效、补全卡死或干扰 lsp 功能。

Sublime Text 4 里装不了 AutoSemiColon——它早已停止维护,且不兼容 ST4 的插件架构(Python 3.8+、API v2),强行安装会导致插件失效、补全卡死,甚至干扰 LSP 或 auto_complete_triggers 的正常行为。
为什么 AutoSemiColon 在 ST4 上根本跑不起来
这个插件最后更新是 2017 年,依赖 ST3 的旧版 API 和 Python 3.3 运行时;ST4 升级后移除了 sublime_plugin.EventListener.on_query_completions 的部分回调签名,也废弃了对 view.substr() 返回类型宽松处理的兼容逻辑。你从 Package Control 搜到的所谓“AutoSemiColon”基本是镜像搬运或重命名的无效包,安装后控制台会报错:AttributeError: 'View' object has no attribute 'extract_scope' 或直接静默失败。
替代方案:用原生设置 + 小技巧实现等效效果
你真正需要的,不是“输入分号自动跳到行尾”,而是“写完表达式快速加分号并换行/继续”。ST4 原生就能做到,还不依赖任何插件:
-
auto_match_enabled设为true后,输入;不会触发跳转,但你可以用Ctrl+Shift+P→ 输入Insert Semi-colon(如果没这个命令,说明你没装 LSP 或没启用) - 更可靠的做法:在用户按键绑定(
Preferences → Key Bindings)中加一条规则,比如把;绑定为“插入分号 + 移动到行尾”:[ { "keys": [";"], "command": "insert_snippet", "args": {"contents": ";$0"}, "context": [ {"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true}, {"key": "following_text", "operator": "regex_match", "operand": "^$|^\s*$"} ] } ] - 如果你常写 JavaScript/TypeScript,推荐直接装
LSP-typescript,它会在你敲;后自动格式化整行(含分号位置校准),比模拟跳转更符合工程实践
别踩坑:那些看似相关但实际无关的配置
很多人翻文档时误以为这些能救 AutoSemiColon,其实完全不对路:
-
auto_complete_triggers控制的是.或触发补全菜单,和分号无关 -
word_separators影响的是补全候选词切分边界,改它不会让分号自动跳位 -
BracketHighlighter是高亮匹配括号的,和分号插入毫无关系 - Emmet 的
disable_auto_insertion只管{、[类缩写,不碰;
真正要解决“写完就加分号还顺手”的问题,得放弃插件幻想,转向按键绑定定制或语言服务器集成——因为 ST4 的设计哲学是:补全归补全,编辑操作归编辑操作,混在一起的插件反而容易崩。











