ctrl+shift+l需先选中行才生效,推荐用正则替换$→,最稳定;vintage模式下该快捷键失效,应禁用或改用正则;操作前须统一换行符和清理行尾空格。

Ctrl+Shift+L 后光标默认在行尾,但必须先选中目标行
直接按 Ctrl+Shift+L 不会生效——它只作用于已存在的选区。你得先用鼠标拖选、Ctrl+L 连续选中、或 Ctrl+Shift+↓ 扩展选区,确保高亮的是你要处理的那些行(含空行也会被加逗号,注意过滤)。Ctrl+A 全选后按 Ctrl+Shift+L 是可行的,但要注意:如果文件末尾没换行符,最后一行光标会落在内容末尾而非换行符前,此时加逗号位置仍正确;但若该行已有逗号,就可能变成重复。
End 键定位行尾不可靠,尤其当行尾有空格时
按 End(Win/Linux)或 Cmd+→(macOS)本意是跳到行尾,但 Sublime 会停在最后一个非空白字符之后——如果行尾有空格或 Tab,光标就卡在空白里。输 , 会变成 item ,,破坏 JSON 或数组语法。
- 执行
Ctrl+Shift+P→ 输入Trim Trailing White Space,先清理所有行尾空白 - 再统一按
End,此时光标才真正落在换行符前 - 若仍不放心,可用
→连按两次:第一次跳过空格,第二次停在换行符前
正则替换 $→, 更稳,但要注意换行符状态
打开 Ctrl+H,勾选右上角 .*(正则模式),查找框填 $,替换框填 ,,点 Replace All。这个操作本质是“在每行结尾位置插入字符”,不改动换行符本身。
-
$匹配的是“行尾位置”,不是换行符,所以不会把\n替换成,\n - 但如果文件最后一行**没有换行符**,
$仍会匹配它末尾的位置,,就会加在文件最末——这通常是你想要的,但需确认是否符合目标格式(如 JSON 数组要求末尾无逗号) - 若原始文本混用
\r\n和\n,部分行可能漏匹配;建议先Ctrl+Shift+P→Set Line Endings: Unix
Vintage 模式下 Ctrl+Shift+L 完全失效
如果你启用了 Vintage(Vim)模式,Ctrl+Shift+L 被重映射为「选中到行尾」,不再是多光标触发键。此时按下去只会扩展当前行选区,其余行毫无反应。
- 临时解决:按
Esc退出 Normal 模式,再试;或干脆Ctrl+Shift+P→Disable Vintage Mode - 长期方案:改用正则路径,它不受模式影响
- 别尝试用列选(
Alt+拖拽)替代——只要行长不一致或缩进用 Tab/空格混搭,光标就会错位,引号和逗号全插歪
\r\n 而其他是 \n,正则就可能跳过它;哪怕只有一行末尾多一个空格,End 就会停错位置。批量操作前花十秒统一格式,比事后调试五分钟更省事。











