Ctrl+J/Cmd+J仅在严格选中含换行符的连续文本块时才批量合并;未选中换行符、多光标、输入法劫持或未统一换行符等均导致失效,须预处理空行/空格/换行符后用正则替换。

Ctr+J / Cmd+J 不是“一键合并多行”的万能键,它只在选区严格包含换行符时才批量生效;多数“按了没反应”或“只合并两行”的情况,本质是选区没选对,不是快捷键坏了。
为什么 Ctrl+J / Cmd+J 按了只合并两行?
join_lines 命令根本不识别“多光标”或“松散选区”,它只认一种东西:连续、完整、含换行符的文本块。
- 没选中任何文本时,它只把光标所在行和下一行拼起来——这是默认行为,不是 bug
- 用
Ctrl+Click或Ctrl+Shift+L创建的多个光标,join_lines完全无视,反而会在每个光标处单独执行“连下一行”,结果错乱 - 鼠标拖选没拖到末行**行尾之后**(即没包住换行符),或
Shift+↓扩展时最后一行没再按一次 ↓ 让光标跳到下一行开头,末行换行符就漏了 - macOS 上搜狗、百度等中文输入法常劫持
Cmd+J,切英文输入法再试 - 右下角状态栏没显示类似
3 lines selected,说明 Sublime 根本没识别出有效多行选区——重来,用鼠标从首行开头拉到末行末尾之后
想用逗号/分号/不留空格,别碰 Ctrl+J
join_lines 的分隔符写死为空格,无法动态切换。硬改只会白费时间,必须走正则替换路径。
- 打开替换面板:
Ctrl+H(Windows/Linux)或Cmd+H(macOS) - 点右上角
.*启用正则模式 - 在
Find What输入:\r?\n(兼容\n和\r\n,比\n|\r\n更简洁可靠) - 在
Replace With填你要的分隔符,例如:,、;、|或留空 - 务必先选中目标区域再点
Replace All,否则会误删全文换行 - 若只想替换选区内换行,按
Alt+R开启「在选区中替换」
合并前不清理这三样,结果必翻车
空行、行尾空格、混合换行符——join_lines 和正则替换都不会自动处理它们,但它们会直接污染输出。
- 空行(含只含空格/Tab 的“伪空行”):
Ctrl+H→ 正则开 →Find What填^\s*$\n→ Replace 为空 - 行尾空格/Tab:
Ctrl+Shift+P→ 输入Trim Trailing White Space执行;更省事就装TrailingSpaces插件,一键清空 - 混合换行符(尤其从 Excel、微信、日志粘贴来的):菜单栏
File → Line Endings → Unix (LF)统一为\n,后续正则可简化为只搜\n
真正卡住人的从来不是命令怎么按
是你合并前根本没意识到:某行末尾有空格 + \r\n,合并后变成两个空格;空行夹在中间,item1 和 item2 中间塞进一个无意义空格;Python 注释行末尾接上新内容,直接破坏语法。这些干扰项 Sublime 全都不替你判断,全得手动干预——预处理不是可选项,是必经步骤。











