正则替换最稳,$匹配行尾替换成;;多光标需确保光标在每行真正末尾,否则易错;推荐正则,尤其适合大代码块或含空行/注释场景。

直接用正则替换最稳,$ 匹配行尾,替换成 ; 即可;多光标方式也行,但得先确保光标真正在每行末尾,否则容易插错位置。
用正则替换一次性加;(推荐)
这是最可靠、最不易出错的方式,尤其适合几十行以上的代码块或混有空行/注释的场景。
- 按
Ctrl+H(Windows/Linux)或Cmd+H(macOS)打开替换面板 - 勾选右下角的
.*图标启用正则模式 - 查找框填:
$(匹配所有行尾位置) - 替换框填:
; - 点「全部替换」——注意:如果某行末尾已有空格或制表符,
$仍能匹配到换行符前,;会插在空白之后,结果是foo() ;,不是foo(); - 若要避免尾随空白,先清理一遍:
\s+$→ 空,再执行$→;
用多光标手动加;(适合小范围精准控制)
适合目标行数少、需要保留尾部空格、或想边看边操作的场景。关键不是“按什么键”,而是“光标落点是否准确”。
- 先用
Ctrl+L(逐行选中)或鼠标拖选整段代码,再按Ctrl+Shift+L拆出多光标 - 此时光标默认落在每行最后一个字符后(含换行符前),但若该行末尾有空格/
\t,光标会停在空白处,不是真正行尾 - 统一按
End(Windows/Linux)或Cmd+→(macOS)把所有光标跳到文本行尾;若仍卡在空白里,连按两次End或改用Ctrl+→+→ - 输入
;,所有行同步添加 - 完成后务必按
Esc退出多光标模式,否则后续误按键会批量修改
为什么Ctrl+Shift+L后直接输;有时没反应?
不是快捷键失效,而是光标没落到你预期的位置。
-
Ctrl+Shift+L只负责“按换行符切开选区并放光标”,不保证光标在行尾——它放在你选区结束的位置,可能在缩进中间、空格里,甚至某行末尾的注释符号前 - 如果你只选中了代码部分(比如从
let a = 1开始拖到行中),Ctrl+Shift+L会在那段末尾放光标,不是整行末尾 - macOS 下
Cmd+→可能被系统快捷键拦截,临时改用Ctrl+A(行首)→Ctrl+E(行尾),前提是启用了 Bash 风格快捷键(设置里加"command_mode": true) - 空行也会被
Ctrl+Shift+L处理,光标落在换行符前,输;会变成单独一行;,破坏结构
别踩这些坑
看似简单的一次替换,实际最容易在边界上翻车。
-
\s别乱用:它会匹配换行符\n,导致;\s*$实际删掉整行内容——改用[ \t]更安全 - 文件末尾没换行符时,
$仍能匹配最后一行尾,但$→;会让分号贴在文件末尾,而不是“行尾”,需手动检查 - 正则替换前建议开启「In Selection」,避免误改其他区域;大文件慎用
.*这类贪婪量词 - JS/TS 项目里,别指望自动补全或 snippet 真正“自动”加分号——它们要么要手动触发,要么污染其他语言,靠不住

















