可用多行编辑+正则替换三步实现:先Ctrl+F搜$并Find All定位行尾,再直接输入;插入;若仅非空行,正则改用\S$。可自定义键绑定调用replace_all命令,但需注意语法安全与换行符兼容性。

怎么用 Sublime 实现“每行末尾自动加 ;”
不能靠单个快捷键一键完成,但通过多行编辑 + 正则替换,3 步内搞定。核心思路是:先定位所有行末(非空行优先),再批量插入 ;。
- 按
Ctrl+Shift+L(Windows/Linux)或Cmd+Shift+L(macOS)将光标打散到每一行首——但这会把空行也带上,后续插入会出错 - 更稳妥的做法:先用
Ctrl+F打开查找,勾选Regular Expression,搜索$,再点Find All—— 这样只匹配所有行尾位置(含空行) - 如果只想给「非空行」末尾加分号,搜索正则改为
[^\s]$,然后按Ctrl+Shift+L→ 再按End→ 输入;
为什么直接搜 $ 后按 End 不起作用
因为 $ 匹配的是“行尾位置”,不是“字符”,光标落在换行符前;而 End 键在 Sublime 中默认跳转到**文本行尾**(即最后一个可见字符后),不是物理行尾。两者语义不同,容易误判光标落点。
- 正确做法:查找到所有
$后,直接输入;,Sublime 会原地插入——无需按End - 若已按了
End,光标可能移到下一行首,导致分号插错位置 - 确认是否多光标生效:看窗口右下角是否显示 “x selections”(如 “42 selections”)
如何保存为可复用的命令(不用每次输正则)
Sublime 不自带“行尾加 ;”命令,但可通过自定义插件或键绑定实现。推荐轻量方案:键绑定 + 正则替换命令。
- 打开
Preferences → Key Bindings,在右侧用户文件中添加:
{
"keys": ["ctrl+alt+;"],
"command": "replace_all",
"args": {
"find": "$",
"replace": ";",
"regex": true
}
}
- 注意:
replace_all是 Sublime 内置命令,但仅对当前选区生效;若没选中内容,它会对全文执行——所以使用前建议先Ctrl+A全选,或用Ctrl+Shift+P → “Select All” - 如果只想处理选中区域,在执行前先手动框选目标段落
容易被忽略的边界情况
真实代码里,不是所有行都该加分号——比如注释行、空行、控制语句末尾(if、for)、对象/数组字面量最后一项等。全自动加容易引入语法错误。
- JS/TS 中:
return { a: 1 }后加分号没问题,但return换行后跟对象会被 ASI 自动插入分号,加了反而可能改变行为 - JSON 或配置文件里写
"key": "value"$替换为"key": "value";会直接破坏格式 - 正则
$在 Windows 文件中匹配\r\n前的位置,Linux/macOS 是\n前,一般不影响插入,但若文件混用换行符,部分行可能漏掉










