Ctrl+Shift+L必须选区含换行符才拆多光标,否则仅生成一个;因它严格按选区内的\n切分,鼠标拖选未覆盖行尾换行符、软换行或drag_text启用均导致失效。

Ctrl+Shift+L 拆光标前必须确认选区含换行符
Sublime 的 Ctrl+Shift+L 不是“给当前行加光标”,而是把**已选中文本按换行符切分**,每段末尾放一个光标。如果鼠标拖选时没覆盖到最后一行的换行符(\n),它就当你是单行选中,只出一个光标。
常见翻车点:
- 粘贴进来的文本带软换行(Word Wrap 开启),实际无
\n,Ctrl+Shift+L完全不响应 - 用
Ctrl+Click点出多个光标 ≠ 选区,该命令对多光标选区无效 - 选区里全是空格或制表符,拆出来光标位置错乱,一输内容就把缩进顶掉
稳妥做法:先 Ctrl+A 全选 → 再 Ctrl+Shift+L;或逐行 Ctrl+L 选中后连按,确保每行都真实被纳入选区。
合并多行时别直接 Ctrl+J,先清空行和尾空格
Ctrl+J 默认用空格连接各行,且会把空行也当成“一行”参与合并——比如 a + 空行 + b,结果是 a b,中间那个空格语义全毁。更糟的是,它保留原行末尾空格,容易导致 CSV 解析失败或 Python 注释错位。
安全两步法:
- 先正则删空行:
Find What填^\s*$\n,Replace With留空,点Replace All - 再清理尾空格:菜单
Edit → Line → Trim Trailing White Space,或装TrailingSpaces插件实时标红
做完这两步,再 Ctrl+J 或用正则 \r?\n 替换为自定义分隔符(如 ,),结果才干净可控。
压缩连续空行不能靠 \n{2,},得用 ^\s*$\n^\s*$ 循环替换
想把 \n\n\n 压成 \n,别用 \n{2,} —— Sublime 的 PCRE 引擎不支持跨行贪婪匹配,{2,} 在这儿基本失效,实际只匹配到第一个 \n。
真正稳的写法是:Find What 填 ^\s*$\n^\s*$(匹配两个连续空行),Replace With 填 \n,勾选 .*,关闭 . matches newline(右下角 \n 图标不能亮)。
为什么要点多次?因为一次只消掉相邻两个空行。原文有四连空行,第一次变两连,第二次才压成单个。这不是 bug,是 Sublime 线性扫描逻辑决定的。
额外建议:先跑一遍 ^\s*$ 把带空格/Tab 的“伪空行”清掉,再跑上面这个,成功率更高。
添加多光标时 drag_text 是静默杀手
Windows/Linux 下 Ctrl+Click 加光标没反应?大概率是 "drag_text": true 在作祟。这是 Sublime 默认开启的配置,会让 Ctrl+Click 优先触发文本拖动,而不是加光标。
解决方法很简单:
- 打开
Preferences → Settings - 在用户设置里加一行:
"drag_text": false
改完不用重启,立刻生效。其他干扰项也要留意:Mac 上搜狗输入法常劫持 Cmd+J,Word Wrap 开启时点击位置难判断,三指触控手势可能误触发——这些都不是快捷键坏了,只是编辑器在按规则执行。
真正难的不是记住快捷键,而是每次操作前花半秒确认:选区是否含 \n、尾部有没有空格、drag_text 开没开。漏掉任意一点,后面所有步骤都会白忙。











