列选择(Alt+拖拽)不适合批量在行尾加逗号,因其按像素/列位置框选而非按行逻辑对齐,无法准确定位每行末尾;正确方法是用正则$锚点替换或End键配合多光标。

列选择(Alt+拖拽)不适合批量插逗号
Sublime 的列选择模式本质是“按像素/列位置框选”,不是“按行逻辑对齐”。你要插逗号的位置是每行末尾,而每行长度不同——哪怕只差一个字符,Alt+拖拽选中的区域在不同行就会落在不同语义位置。结果不是每行末尾加逗号,而是某些行插在中间、某些行漏掉、某些行插进缩进里。
为什么行尾插逗号必须用 $ 正则或 End + 多光标
真正可靠的行尾定位只有两种:一种是正则引擎的 $ 锚点(它精确匹配换行符前的位置),另一种是人工把光标挪到每行末尾(End 或 Cmd+→)。列选择做不到这点,因为它不感知“行尾”,只认屏幕坐标。
-
$在 Sublime 正则中默认匹配每行结尾(不含换行符),替换为,就能稳稳加在所有非空行尾 - 用
Ctrl+L逐行选中 → 统一按End→ 输入,,光标会真实停在换行符前,不会错位 - 如果某行末尾有空格,
End可能停在空格上,此时连按两次→或改用End更可靠
误用列选择插逗号的典型翻车现场
当你 Alt+鼠标从第一行末尾拖到最后一行末尾时,Sublime 实际选中的是一个“矩形块”。如果某行比其他行短(比如 user_id 和 age 并排),这个矩形会在短行上切开单词,导致逗号插进 u,ser_id 或 a,ge 里。更糟的是,含 Tab 和空格混用的文件,视觉对齐完全不可信——列选择根本无法识别逻辑行尾。
真正该用列选择的场景是什么
列选择只适合绝对列位置插入,比如给所有行第 20 列统一加 // 注释,或对齐等号:name = "Alice" → 在第 12 列统一插空格。它和“行尾”无关。一旦目标是“每行末尾”,列选择就是错误工具——不是操作不对,是它压根没设计来干这事。











