multi_edit_utils:align_selections比手动空格更稳,因其按目标列号强制所有光标跳转至同一绝对字符索引,不受Tab/空格混用、缩进不一致影响;而手动空格会因每行实际插入字符数不同破坏对齐。

Sublime列选择后为什么multi_edit_utils:align_selections比手动空格更稳
列选择本身只创建视觉对齐的矩形选区,但真实字符位置可能因 Tab/空格混用、缩进不一致而错位。此时直接敲空格或 Tab,每行实际插入的字符数不同,反而破坏对齐。multi_edit_utils:align_selections 是唯一能按「目标列号」强制所有光标跳转到同一绝对位置的命令——它不依赖当前缩进样式,也不受制表符宽度影响。
实操建议:
- 先用
Ctrl+Alt+↓(Win/Linux)或Cmd+Option+↓(macOS)在目标列逐行加光标 - 再按
Ctrl+Shift+P→ 输入MultiEditUtils: Align Selections回车 - 命令会弹出输入框,默认对齐到第 1 列;想对齐到第 20 列?直接输
20回车 - 对齐后所有光标真正落在同一字符索引上,此时输入
"或;才不会错行
用multi_edit_utils:split_selection_on_character替代列选择处理点号分隔字段
遇到 user.name、profile.id、data.version 这类结构化字段时,列选择容易在 . 前后偏移一格,尤其当某行有空格或缩进不一时。与其拖拽列选,不如直接选中全部字段,执行 multi_edit_utils:split_selection_on_character 拆光标。
常见错误现象:列选后按 .,结果只在第一行插入了点,其余行没反应——因为列选区域没覆盖到点号本身,只是“点号左边”或“右边”的一列。
实操建议:
- 用鼠标或
Ctrl+D选中全部带点的字段(不需要精确到点,整段选中即可) - 按
Ctrl+Shift+P→ 输入MultiEditUtils: Split Selection on Character回车 - 在弹出框中输入
.(注意是英文点号,不是中文句号) - 执行后,每个
.左右都会生成独立光标,方便统一加引号:"user".name→"user"."name"
列选择 + multi_edit_utils:toggle_case 统一变量命名风格时的坑
列选择后按 Ctrl+Shift+L 再执行 toggle_case,常出现大小写混乱:比如 user_name 转成 userName,但 USER_ID 却变成 User_Id。这是因为 toggle_case 默认按“下划线分隔”逻辑处理,而列选择强行把多行不同语义的字段塞进同一列,干扰了插件的词法识别。
正确做法是放弃列选,改用语义化选中:
- 先用
Ctrl+D逐个选中所有要改的变量名(支持正则:搜索\b[a-zA-Z_][a-zA-Z0-9_]*\b后按Ctrl+D全选) - 再按
Ctrl+Shift+P→MultiEditUtils: Toggle Case - 选
snake_to_camel或camel_to_snake,插件会按单词边界准确转换,不依赖列位置 - 如果必须用列选(比如字段不在同一行),务必先执行
Convert Indentation to Spaces,否则 Tab 会导致toggle_case误判单词起始位置
为什么Column Select命令面板入口基本不用
Ctrl+Shift+P 里搜 Column Select 确实能调出命令,但它只是模拟鼠标列选行为,并不改变 Sublime 的底层坐标系统。一旦文件含混合缩进、BOM 或软换行,该命令返回的列范围和你肉眼看到的完全不一致——尤其在 macOS 上,它甚至可能把中文字符算作两个列宽。
真正可靠的路径只有两条:
- 鼠标:按住
Alt(Win/Linux)或Option(macOS)垂直拖拽,边拖边看灰色矩形是否“方正” - 键盘:光标定位到首行目标列,连按
Ctrl+Alt+↓(Win/Linux)或Cmd+Option+↓(macOS),它基于字符索引而非像素,抗干扰强
插件再强,也救不了列选择源头的错位。对齐这件事,永远得从第一行光标落点开始校准,而不是指望后续命令自动修正。

















