sublime text 4 中 pangu 插件不可用,因其仅支持 st3 且基于 python 2,已停止维护并从 package control 移除;推荐使用原生正则替换或自定义命令实现中英文自动加空格,稳定、可控、零依赖。

Sublime 本身不自带中英文自动加空格功能,Pangu 插件已停止维护且不兼容 Sublime Text 4;推荐用原生正则替换 + 用户自定义命令组合实现,稳定、可控、无需额外依赖。
为什么 Pangu 插件不能用
Pangu 插件(pangu.sublime-package)最后一次更新是 2019 年,仅适配 Sublime Text 3,其 Python 2 兼容代码在 ST4 中会直接报错 ImportError: No module named 'pangu' 或 UnicodeDecodeError。即使强行安装,也无法响应保存事件或实时排版——它不是“开箱即用”,而是早已失效的遗留方案。
- 插件仓库已从 Package Control 移除,
Package Control: Install Package搜索不到Pangu - 手动下载安装后,调用
ctrl+shift+p → Pangu: Format会卡死或无响应 - 它不支持中文标点与英文之间补空格(如
你好,world→你好, world),只处理基础中英字符邻接
用正则替换快速修复中英文混排
这是最直接、零依赖、可复用的方式。打开命令面板 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 Replace 回车,进入替换面板,勾选 Regular Expression(正则模式):
- 中→英:Find
([\x{4e00}-\x{9fa5}])([a-zA-Z])→ Replace$1 $2 - 英→中:Find
([a-zA-Z])([\x{4e00}-\x{9fa5}])→ Replace$1 $2 - 英文标点→中文:Find
([a-zA-Z0-9])([,.;!?])→ Replace$1$2(注意末尾空格) - 中文标点→英文:Find
([\u4e00-\u9fa5])([,.;!?])→ Replace$1$2(不加空格,保持中文标点习惯)
⚠️ 注意:\x{4e00}-\x{9fa5} 在 Sublime 中需启用 Unicode 正则(默认开启),但若替换失败,请改用 [\u4e00-\u9fa5] ——两者等效,后者兼容性略高。
把常用替换做成一键命令(免重复输正则)
新建一个用户命令文件:Preferences → Browse Packages → User,创建 zh_en_spacing.py,内容如下:
一款AI工具,主要用于生成可直接复制粘贴的 Bash 脚本,用于 Ralph Wiggum/AI 代理循环(Codex、Claude Code、OpenCode、Goose)。适用于“拉尔夫循环”“Ralph Wiggum 循环”或 AI 循环请求,依据 PROMPT.md、AGENTS.md、SPECS、IMPLEMENTATION_PLAN.md 进行计划/构建,包含计划与构建模式、背压、沙箱及完成条件,适合需要提升相关任务效率的用户。
import sublime
import sublime_plugin
<p>class ZhEnSpacingCommand(sublime_plugin.TextCommand):
def run(self, edit):</p><h1>中→英、英→中补空格</h1><pre class="brush:php;toolbar:false;"> self.view.run_command("replace_all", {
"find": r"([\u4e00-\u9fa5])([a-zA-Z])|([a-zA-Z])([\u4e00-\u9fa5])",
"replace": r"$1$3 $2$4",
"regex": True
})
然后在 Key Bindings – User 中添加快捷键:
[
{ "keys": ["ctrl+alt+space"], "command": "zh_en_spacing" }
]
保存后,选中文本按 Ctrl+Alt+Space 即可批量处理。该命令只作用于当前选区,未选中则全文件生效——比插件更轻、更可控。
容易被忽略的边界情况
中英文加空格不是机械拼接,实际写作中要避开这些位置:
- URL、邮箱、路径(如
https://example.com/你好)——不该拆开,正则需加负向先行断言(? - 代码标识符(如
userName、用户列表)——这类混合命名是语义整体,加空格反而破坏可读性 - HTML/XML 标签内属性值(
<p class="textCenter"></p>)——正则易误伤,建议先用Ctrl+Shift+P → Select by Scope: string.quoted跳过字符串范围 - 已存在空格的相邻位置(
你好 world)——重复运行会导致你好 world(两个空格),需先用replace: \s+→去重
真正难的从来不是“怎么加空格”,而是“哪些地方绝对不能加”。正则能给你控制权,插件只会替你做决定——而那个决定,大概率不符合你的上下文。










