列选择复制需确保每行长度一致,否则粘贴错位;其本质是按字符索引选矩形区域,非像素对齐,tab/空格混用、中文或软换行均会导致偏移。

列选择复制必须确保每行长度一致,否则粘贴会错位
Sublime 的列选择(Alt+拖拽 / Option+拖拽)本质是按字符索引选中矩形区域,不是按屏幕像素对齐。一旦某行缩进用 Tab、另一行用 4 个空格,或某行含中文/全角字符,光标列位置就会偏移,复制出来的“列”在视觉上就歪了。
常见错误现象:Alt+拖拽看着框得很齐,一粘贴发现字段全串行——比如想改所有行的第 12–15 列端口号,结果第 3 行的端口被写到了路径字段里。
- 验证是否真对齐:选中前先按
Ctrl+Shift+P→ 输入Set Syntax: Plain Text,关闭语法高亮和软换行("word_wrap": false),再看各行左端是否严格垂直对齐 - 安全做法:只对纯空格缩进、无中文、无 Tab 混排的文本使用列选择;Python/JSON/YAML 文件慎用
- 临时补救:粘贴后立刻按
Ctrl+Z,用Ctrl+Shift+P→Reindent尝试自动对齐(不总可靠)
复制列内容后,粘贴时默认走“行对行映射”,不是广播式覆盖
你用 Alt+拖拽选中 5 行的同一列区域,复制后剪贴板实际是 5 行文本(每行对应原位置的一段)。此时若在别处用 Ctrl+Shift+L 拆出 3 个光标再 Ctrl+V,Sublime 会把剪贴板前 3 行依次填入——第 4、5 行内容直接丢弃。
这跟多光标粘贴逻辑一致,但容易被忽略:列选择复制 ≠ 纯文本复制,它保留了“行结构”。所以粘贴目标也必须是等量、对齐的列区域。
- 正确场景:源文件 A 中列选 4 行 → 复制 → 在文件 B 中
Alt+拖拽选中同样 4 行的空白列区域 →Ctrl+V - 错误操作:列复制 4 行内容,却在单行里
Ctrl+V→ 只粘第一行,其余消失 - 剪贴板内容可验证:复制后新建空白文件,
Ctrl+V看是否显示为多行;若只显示一行,说明列选失败或含不可见分隔符
想用列选择批量替换固定列,得先清空目标列再粘贴
列选择本身不支持“覆盖式粘贴”。你 Alt+拖拽 选中目标列区域后,必须先按 Delete 或 Backspace 清空,再 Ctrl+V,否则新内容会插入到旧内容左侧,造成重叠。
尤其注意:如果目标列区域里有空格或制表符,Delete 可能只删部分字符,导致后续粘贴错位。最稳做法是选中后直接按 Ctrl+X 剪切(相当于清空 + 进剪贴板),再 Ctrl+V。
- 快捷流程:
Alt+拖拽选目标列 →Ctrl+X→ 移动光标到源列位置 →Alt+拖拽选源列 →Ctrl+C→ 回到目标位置 →Ctrl+V - 风险点:源列和目标列字符数不等时,粘贴后可能挤压或拉伸相邻字段,比如把 4 位端口替换成 5 位,后面注释全偏移
- 替代方案:用正则替换更可控,例如
:(\s+)\d{4}→:$18080,避免手动列操作
列选择粘贴失败时,优先检查软换行和折叠区域
如果 Alt+拖拽 选区看起来正常,但粘贴后内容乱跳,大概率是当前视图启用了软换行("word_wrap": true)或存在折叠代码块。软换行会让一行在显示上折成两行,但 Sublime 仍按单行字符索引计算列位置;折叠区域则会让光标“跳过”隐藏行,导致列选起始行号错乱。
最容易被忽略的是:折叠状态下,Alt+拖拽 从第 2 行拖到第 10 行,实际只覆盖了可见的 5 行,另 5 行被折叠在中间,根本没被选中。
- 排查步骤:按
Ctrl+Shift+P→ 输入Toggle Word Wrap关闭软换行;再按Ctrl+K Ctrl+1展开全部折叠 - 确认选区:列选后松手,看状态栏是否显示类似
col 12–16, 5 lines;若显示行数远少于预期,说明有折叠干扰 - 终极保险:列操作前先执行
Ctrl+A→Ctrl+Shift+P→Reindent统一缩进,再操作











