Sublime列选择错位主因是光标坐标系统受制表符、全角字符、软换行等干扰,非文件大小所致;应转空格缩进、关软换行、用等宽字体、以Ctrl+Alt+↓追加光标并确保行数对齐。

列选择在长文本中“断掉”或错位,根本不是性能问题
Sublime 的列选择失效,90% 不是因为文件太大,而是光标坐标系统被干扰了。它不按“逻辑行号”算位置,而是依赖每行的可视字符宽度(含制表符、全角字符、缩进差异)实时计算列偏移。一旦某行太短、含 Tab、有中文或开了软换行,后续行的列对齐就会跳变。
常见错误现象:Alt+鼠标拖拽 到第 20 行时突然歪斜,或者选区在空行/折叠块处中断;Ctrl+Alt+↓ 追加光标时,第 15 行光标跑到行尾而不是原列。
- 先执行
Ctrl+Shift+P→ 输入Convert Indentation to Spaces,把所有\t转成空格 - 关闭软换行:
View → Word Wrap(确保状态栏右下角没有Wrap标识) - 临时切语法为
Plain Text(Ctrl+Shift+P→Set Syntax: Plain Text),避免高亮插件注入不可见字符 - 如果含中文,用等宽字体(如
Fira Code),并在操作前关掉translate_tabs_to_spaces设置,防止混排计算偏差
长文本里别靠鼠标拖,用光标定位+逐行追加更稳
在 500 行日志或 CSV 片段里垂直拖拽,手一抖就斜了,而且无法回头调整起始列。真正适合长文本的方式是:先定锚点,再纵向扩展。
实操路径:Ctrl+G 跳到目标起始行 → 方向键移到目标列(比如第 22 列)→ 按 Ctrl+Alt+↓(Win/Linux)或 Cmd+Option+↓(macOS)向下追加光标。每按一次,就在下一行同列加一个光标,可随时停。
- 想跨空行?不行。空行会跳过,光标落在下一行开头。提前用
Ctrl+H查找^\s*$(空行正则)→ 替换为空,或手动删 - 某几行缩进不一致?先用
Ctrl+Shift+L把当前选区按行拆成光标,再统一按→键横向移动到目标列,比重拖快得多 - 追加到一半发现列偏了?按
Esc清除所有额外光标,回到首行重新定位
粘贴多行内容进列选区,必须控制“行数对齐”
从 Excel 或外部复制了 3 行文本,想粘进列选的 5 行区域——Sublime 不会补空行,也不会截断,而是按行一对一覆盖:第 1 行粘贴内容塞进第 1 行列选位置,第 2 行对应第 2 行……超出的行保持原样,不足的行只覆盖部分字符。结果就是错位。
安全做法只有一条:粘贴前确保剪贴板行数 = 列选行数。如果做不到,就分两步:
- 先列选目标区域,敲一个占位符(比如
:),让它同步播撒到所有行 - 立刻按
Ctrl+Z撤回,此时 Sublime 记住了这次“多光标输入”的上下文 - 再
Ctrl+V粘贴,它会把新内容当“一次输入”分发,对齐稳定性明显提升 - 若粘贴内容本身含换行(比如带缩进的代码块),先在外部编辑器里转成单行(用空格代替换行),再粘
折叠代码块和大括号内列编辑,得先“展开再锁列”
在函数体被折叠(显示为 ... { })时做列选择,Sublime 根本看不到内部行,选区会在折叠行前后硬切断。这不是 bug,是设计如此——列选择只作用于当前渲染的物理行。
正确顺序永远是:展开 → 统一缩进 → 关闭软换行 → 定位列 → 列选或追加光标。尤其注意 Ctrl+K Ctrl+J 是展开所有折叠,但如果你只要展开某一层,得用鼠标双击折叠标记,否则可能漏掉嵌套块。
容易被忽略的一点:Ctrl+Shift+P 执行 Selection: Expand to Brackets 后再列选,能确保光标落在大括号对齐列上,比手动数空格准得多。

















