ctrl+shift+l 拆光标以换行符为切分点,需确保选区含\n或\r\n;空行、尾部空格、换行符混用会致匹配失败;加引号应使用^(1+)$替换为"$1";join lines不加逗号,需手动补;replace in files不支持$1。,\r\n ↩

Ctrl+Shift+L 拆光标前必须确保选区含换行符
这个操作不是“选中几行就生成几个光标”,而是把选区里实际存在的 \n 或 \r\n 当作切分点。鼠标拖选时如果最后一行末尾没覆盖到换行符,Ctrl+Shift+L 就只出一个光标。
常见救法:
- 先用
Ctrl+L(Windows/Linux)逐行选中整行,再按Ctrl+Shift+L,稳出每行一个光标 - 选中后按
Home移到行首,再按Ctrl+Shift+L,避免光标落在缩进位置导致错位 - 空行会打断拆分逻辑——提前删掉或用
Ctrl+Shift+F查找^\s*$替换为空,清空后再操作
给每行加引号要用 ^[^,]+ 而不是 (w+)
(w+) 匹配字母数字下划线,遇到 user-id、API_KEY、2024Q3 全部失效;更糟的是它不锚定边界,username 里的 name 也会被单独抓出来。
安全写法是明确分隔意图:
- 若原始数据是换行分隔的纯值:查找
^([^,\r\n]+)$,替换为"$1" - 若带尾部逗号(如
a,),先用,\s*$清掉,再套上面正则 - 含中文或特殊字符?关闭
.matches newline(右下角 .* 图标未点亮),避免跨行误匹配
合并成 ["a","b","c"] 必须分三步,顺序不能反
一步到位容易卡死或漏匹配,尤其大文件。正确节奏是:
- 先确保每项独占一行(原始是
a,b,c就先用,替换为\n) - 再对每行加引号(用上一条的正则)
- 最后全选 →
Ctrl+Shift+P→ 输入Join Lines→ 手动在开头加[、结尾加]
注意:Join Lines 默认只加空格,不会加 , 。别指望它自动补逗号,得额外做一次 → , 替换。
Replace in Files 里 $1 永远不生效
这是 Sublime 的硬限制:跨文件替换面板(Ctrl+Shift+H)完全不支持捕获组引用。你写 $1 或 ${1},它就原样输出字符串 $1。
真要批量处理多个文件:
- 用
Ctrl+Shift+F(Find in Files)搜出所有匹配项 - 点 Find 后,在结果页右键 →
Copy File Paths and Results - 粘贴到新标签页,再用
Ctrl+H(当前文件替换)配合$1安全加工
真正卡住人的从来不是正则怎么写,而是空行没清、尾部空格没 Trim、换行符混用(剪贴板里 Windows 和 macOS 换行并存)——这些细节不处理,^([^,\r\n]+)$ 也会跳过某几行,最终数组里冒出空字符串或多余逗号。











