Sublime Text 中批量加/删行尾分号可用原生正则替换:加分号用 $ → ;,删分号用 ;[ \t\u00A0]*$ → 空,需先清理尾随空白、确认语法类型、开启可视化空格以避免误操作。

Sublime Text 里批量加或删行尾分号,不用写脚本、不靠插件,原生正则替换 + 内置命令就能稳稳处理。关键不是“能不能”,而是“在哪改、怎么写、容易错哪”。
用正则在行尾加/删分号最直接
这是最通用、最可控的方式,尤其适合一次性清理或补全代码块。
- 加分号:打开
Ctrl + H(Windows/Linux)或Cmd + H(macOS),勾选右下角.*启用正则,查找框填$,替换框填;,点「全部替换」 - 删分号:查找框填
;$(注意分号紧挨$),替换框留空;如果分号后还有空格,用;[ \t]*$ - 别用
\s—— 它会匹配换行符,导致误删整行;[ \t]更安全,只匹配空格和 Tab - 执行前先
Ctrl + Z撤销一次看看效果,避免误操作影响多行逻辑(比如 SQL 的;在注释里也匹配)
删分号时为什么有时没反应?
常见不是正则写错了,而是分号不在“真正行尾”——它后面可能跟着空格、Tab,甚至不可见的 Unicode 空白字符(如 \u00A0)。
- 先用
Ctrl + Shift + P输入Set Syntax: Plain Text切换语法,排除高亮插件干扰 - 开启可视化空格:
Preferences → Settings,添加"draw_white_space": "all",能看清哪些是“隐形空格” - 更稳妥的删除正则:
;[ \t\u00A0]*$(覆盖普通空格、Tab 和不间断空格) - 如果文件是 JSON 或 YAML,分号本身非法,加了反而报错——得先确认当前语言是否允许分号
想一键清理?绑定 trim_trailing_white_space 命令
虽然这个命令本意是删空格,但它也能配合正则前置清理,让分号操作更干净。
- 手动触发:按
Ctrl + Shift + P(Win/Linux)或Cmd + Shift + P(macOS),输入Trim Trailing White Space回车,先清掉所有行尾空白,再跑分号正则 - 快捷键绑定:打开
Preferences → Key Bindings(右侧 User),加一行:[{"keys": ["ctrl+alt+;"], "command": "trim_trailing_white_space"}] - 注意:
trim_trailing_white_space不删分号,只清空白;但清完后;$就能精准匹配,不会漏掉“分号+空格”这种组合 - 别和
TrailingSpaces插件共存——两者同时启用会导致光标乱跳、重复触发
Python/JS 等语言里加/删分号要特别小心
不是所有语言都欢迎行尾分号,硬加可能引入语法错误,硬删可能破坏语义。
- JavaScript:严格模式下
return {a:1}后换行加;是必须的,但if (x) do();末尾加;属于冗余,删掉无害 - Python:分号合法但极少用,
a = 1; b = 2能运行,但 PEP8 明确反对;批量加会污染代码风格 - SQL:多数方言要求每条语句以
;结尾,但 SQLite 命令行工具里.tables这类指令不能加分号——得按文件类型区分处理 - 建议:对非 JS/TS/C/Java 类语言,先用
Ctrl + Shift + P输入Set Syntax确认当前高亮类型,再决定是否执行
真正麻烦的不是操作本身,而是分号位置和上下文语义的耦合——它可能紧跟在注释后、嵌套括号内、或者被缩进空格隔开。动手前看一眼右下角语法标识,顺手开个 draw_white_space,比反复试错快得多。


















