sublime列编辑必须先清理bom、统一换行符、去除首尾空格,否则ctrl+shift+l拆行光标错位;alt+拖拽列选后需再按ctrl+shift+l转多光标才能批量输入;正则替换须启用in selection避免误改。

Sublime 的多重选择和列编辑不是“锦上添花”的技巧,而是数据清洗中绕不开的实操路径——漏掉清洗前置步骤(比如 BOM、空格、换行符不一致),后面所有列操作都会错位或漏行。
为什么 Ctrl+Shift+L 拆行后光标位置总不对?
这是数据清洗中最常踩的坑:Ctrl+Shift+L 只是把当前选区按换行符切开,每行一个光标,但它完全不校验每行首尾是否有不可见字符。如果原始数据带 BOM、混合了 \r\n 和 \n、某几行开头多两个空格,那拆出来的光标就根本不在同一逻辑列上。
- 务必先用
Ctrl+H打开替换面板,启用正则模式(勾选.*),查找^\s+|\s+$并替换成空,清理首尾空白 - 再统一换行符:查找
\r\n|\r,替换成\n - 最后才执行
Ctrl+Shift+L,否则列对齐就是假象
Alt+拖拽列选后无法批量输入?
列选本身只是“选中矩形区域”,它不等于多光标编辑状态。很多用户拖完松手就直接敲字,结果只在第一行生效——因为 Sublime 默认只对首个光标位置执行输入。
- 必须在 Alt+拖拽完成选中后,立刻按
Ctrl+Shift+L(macOS 是Cmd+Shift+L),把矩形选区转为多光标 - 此时每个光标都落在所选列的起始位置,输入/删除才会同步作用于所有行
- 若想在列末尾追加内容(比如加引号),先列选最后一列空白处,再按
Ctrl+Shift+L,然后按End键跳到每行末尾,再输入
用正则配合列选批量改字段名时,为什么匹配不到?
正则替换默认作用于整篇文档,一旦你已用列选锁定了某几列,却没开启 “In Selection” 选项,那替换仍会扫全文件,极可能误伤其他位置的同名字段。
- 先用 Alt+拖拽选中目标列(例如 SQL 中的字段名那一竖列)
- 按
Ctrl+H打开替换面板,确保右下角显示In Selection已启用(没显示就点它) - 正则模式下写
\b([A-Z][a-zA-Z0-9]*)\b匹配 PascalCase,替换为\L$1(小写)或snake_case转换逻辑需配合插件或手动分步 - 注意:Sublime 原生命令不支持复杂大小写转换,
\L仅对 ASCII 有效;含中文或 Unicode 字符时建议先导出再用 Python 处理
真正卡住人的从来不是功能不会用,而是清洗动作没做全就急着列选——BOM、混用换行符、首尾空格,这三样只要漏一个,列编辑就会“看起来没问题,实际改错行”。动手前花 10 秒跑一遍 ^\s+|\s+$ 和 \r\n|\r 替换,比后面反复调试强十倍。











