应优先用正则替换,其次用多光标:正则用^([^$]+)$→'$1'全局处理;多光标需先ctrl+shift+l转行首再输入单引号。列选择因像素级对齐易错位,不可靠。

列选择(Alt+拖拽)在Sublime里根本不能可靠加单引号
列选择是像素级选区,不是按逻辑行对齐的。只要文本缩进不一致、混用 Tab/空格、某行比其他行短一个字符,Alt+拖拽出来的“列”就会错位——比如想在 user_id 和 email 前都加 ',结果可能变成 'user_i 和 'd,或者引号插进缩进空格里变成 ' user_id。这不是操作失误,是机制限制。
为什么你按 Alt+拖拽后输 ' 只改了第一行?
因为 Sublime 的列选择默认只激活第一个光标响应输入;其余只是视觉高亮,不参与编辑。常见错误现象包括:
– 某些行引号贴着内容('item),某些行前面多空格(' item)
– 行尾有空格时,' 被插在空格右边,变成 item '
– Markdown 列表(- name)或 YAML 键(key:)直接被切开
真要批量加单引号,该用哪两种方式?
优先选正则替换,其次用多光标手动控制:
- 正则替换(推荐,尤其 ≥20 行):Ctrl+H → 勾选
.*→ Find What:^(.+)$→ Replace With:'$1'→ Replace All。它自动跳过空行、无视缩进、不依赖光标位置 - 多光标(≤50 行且结构干净):先鼠标拖选目标行 → Ctrl+Shift+L(Win/Linux)或 Cmd+Shift+L(macOS)→ 按
←或Ctrl+Home确保所有光标落在第 0 列 → 输入'→ 再按End或Cmd+→→ 输入' - 若需处理 JSON key 或清理旧格式(如
'name':或id:),用更精准正则:(?")(?)([a-zA-Z_][a-zA-Z0-9_]*)("?)\s*:→'$2':
最容易被忽略的点:列选择前没统一缩进,等于提前埋雷
哪怕你硬要用列选择,也必须先执行 Ctrl+Shift+P → 输入 Indentation: Convert to Spaces 统一为纯空格,并确认所有行长度一致。但即便如此,遇到注释(user_id // primary)、逗号分隔(name, age)或中文字符,列选择仍会失效。正则不认视觉对齐,只认文本结构——这才是它稳的根本原因。











