列选择前必须统一缩进和编码,否则90%错位;alt+拖选是瞬时动作非模式;列选后需ctrl+shift+l转为多光标才能批量编辑。

列选择前必须统一缩进和编码
直接对 Excel 粘贴或日志复制过来的文本做列选,90% 会错位。根本原因是制表符 \t 和空格混用、中英文字符宽度不一致、编码识别错误。比如某行用 4 个空格缩进,另一行用 1 个 \t(实际显示宽度可能是 2 或 8),列选时 Sublime 按“屏幕字符列”计算,视觉对齐但坐标偏移。
必须先做三件事:
- 全选 →
Ctrl+Shift+P→ 输入Convert Indentation to Spaces→ 回车,把所有\t转成空格 -
Ctrl+Shift+P→Trim Trailing White Space,删掉每行末尾多余空格 - 右下角点击当前编码(如
UTF-8)→Reopen with Encoding→ 尝试UTF-8 with BOM或GBK,确认中文不乱码后再保存
Alt+拖选不是模式,是瞬时动作
Sublime 没有「开启列编辑模式」这回事。所谓列选择,就是你按住修饰键 + 鼠标左键垂直拖动的那一瞬间触发的行为——松开鼠标,选区就定了,没有状态、不存缓存、不能中途调整。
最稳操作路径只有一条:
- Windows/Linux:
Alt+Shift+ 鼠标左键,从第一行目标列位置垂直向下拖(别斜着、别松手再按) - macOS:
Option+Shift+ 鼠标左键,同上;若失效,检查系统是否启用了「粘滞键」或「鼠标键」干扰组合键 - 拖动时看到灰色矩形块才表示成功;松手后若只选中首尾两行,说明横向分量过大,被判定为普通选区
列选完不按 Ctrl+Shift+L = 白选
列选生成的是一个矩形选区,不是多个光标。默认情况下,你敲 // 或 log.,只会作用于第一行对应列位置,其余行纹丝不动——这是新手踩坑率最高的地方。
必须立刻补一步:
- Windows/Linux:按
Ctrl+Shift+L,把矩形拆成每行一个光标 - macOS:按
Cmd+Shift+L - 之后输入内容,才会同步写入所有行;按
Delete或Backspace也是整列删除 - 如果按完只出一个光标,大概率是选区没包含换行符——重拖时多往下拉一格,确保覆盖行尾不可见的
\n
含中文或不等宽字段时别硬拖
Sublime 的列选择按“字符数”算,不是像素。中文字宽 ≈ 2 ASCII 字符,一旦某行第 10 列是个中文,光标实际落在字中间,输入会把字劈开(比如“苹果”变成“苹[新内容]果”)。
更可靠的做法:
- 关闭
View → Word Wrap,防止软换行干扰列计算 - 字体必须设为等宽(如
Fira Code、Consolas),非等宽字体下列选完全不可靠 - 光标先定位到首行目标列(如第 15 列),再用
Ctrl+Shift+↓(Win/Linux)或Cmd+Shift+↓(macOS)纵向追加光标,比鼠标拖更准 - 含中文字段较多时,先用正则替换临时标记:
查找([\u4e00-\u9fa5]+),替换为CHN_$1_END,编辑完再反向换回
AlignTab 插件或导出处理——列选择只是起点,不是万能解。











