Sublime Text 不支持直接交换两列,需用 Alt+Shift(或 Option+Shift)列选择→剪切→定位粘贴→再剪切原列→回粘,全程依赖等宽字体、手动对齐列边界,且不校验语法或结构。

Sublime 没有“交换两列”的内置命令,得靠列选择 + 剪切粘贴组合操作
Sublime Text 从不提供 swap_columns 这类函数,也不支持像 Excel 那样拖拽列头互换。所谓“交换两列”,本质是:选中第 A 列内容 → 剪切 → 把光标移到目标位置(比如原第 B 列右侧)→ 粘贴 → 再选中第 B 列(此时已偏移)→ 剪切 → 粘贴回 A 列原位。整个过程必须手动控制列边界,且依赖等宽字体和关闭 drag_text。
列选择必须用 Alt+Shift+鼠标拖拽,单按 Alt 无效
很多人卡在第一步:鼠标按住 Alt 拖不动,或拖出来是歪的。这是因为:
-
Alt单独按下不会触发列选择;必须同时按住Alt+Shift(Windows/Linux)或Option+Shift(macOS),再用鼠标垂直拖动 - 如果字体不是等宽(如系统默认的 San Francisco 或微软雅黑),列会视觉错位——务必在
Preferences → Settings中确认"font_face": "Consolas"或类似等宽字体 - 拖拽起点必须落在某行的**确切字符列上**(比如第 10 列),终点也需对齐同一列;斜拉会产生锯齿,导致部分行漏选
- 某行太短?光标会自动停在该行末尾,这是正常行为,不是 bug
剪切后粘贴位置决定最终列序,不能靠“松手自动对齐”
列选择剪切的内容是纯矩形块,不含换行符逻辑。粘贴时 Sublime 不做列对齐推算,只把内容插入当前光标所在列:
- 想把原第 2 列挪到第 5 列右侧?先把光标移到第 6 列(即第 5 列后一列)任意行,按
Ctrl+V(Windows/Linux)或Cmd+V(macOS) - 粘贴后原第 5 列内容会被右推,但不会自动“让出空列”——你得自己删掉原第 2 列残留(或提前用
Ctrl+X剪掉) - 若目标列已有内容,粘贴会覆盖而非插入——务必先确认目标列为空白,或用空格占位
- 多行同时粘贴时,光标必须全部落在同一列;否则各行插入位置不同,列结构直接崩坏
真正容易被忽略的是:列交换不校验语法、缩进或 JSON 结构
你用列选择把 CSV 的第三列(值)和第四列(单位)互换,Sublime 不会检查这是否破坏数值格式;把 Python 字典的 key 和 value 列对调,它也不会报错。所有语义风险由你承担:
- 粘贴后缩进全乱?因为列选择不识别 Tab 与空格差异,混合缩进下光标列位置会漂移
- JSON 里交换字段名和字符串值?双引号可能被切半,导致语法错误
- 空行参与列选择?光标会落在行首,但剪切内容为空,粘贴后可能多出意外空格
- 跨折叠区域列选?Sublime 不提示,选区会断裂,建议先展开相关代码块

















