ctrl+j/cmd+j仅在选中含换行符的连续多行时才合并全部行,否则只合并当前行与下一行;需确保选区包含末行换行符、清除行尾空白与空行,并统一换行符为lf,分隔符不可自定义,须用正则替换实现。

Ctrl+J(Windows/Linux)或 Cmd+J(macOS)能立刻合并多行,但只在你真正「选中完整多行」时才生效;否则它只会连当前行和下一行,不是 bug,是设计如此。
为什么 Ctrl+J 按了没反应或只合并两行
这不是命令失效,而是 Sublime 对选区有硬性要求:
- 没选中任何文本时,
join_lines只处理「当前行 + 下一行」,不删换行符,也不看后面还有多少行 - 用
Ctrl+Click或Ctrl+Shift+L创建的多光标,join_lines完全无视——它只认连续的、含换行符的选区 - 鼠标拖选没拖到行尾(漏掉换行符),或用
Shift+↓扩展时最后一行没按一次 ↓ 让光标跳到下一行开头,末行换行符就没被包含 - 中文输入法(尤其 macOS 上搜狗、百度)常劫持
Cmd+J,切英文输入法再试 - 状态栏右下角没显示类似
3 lines selected,说明没选对——重来,用鼠标从行首拖到末行行尾之后
合并前必须清理的两个干扰项
join_lines 不做任何预处理,所有空白原样保留,合并后“失败感”基本都来自这两点:
- 行尾空格/Tab:执行
Ctrl+Shift+P→ 输入Trim Trailing White Space清当前行;想彻底清理,装TrailingSpaces插件,再运行TrailingSpaces: Remove from current view - 空行(含只含空格/Tab 的“伪空行”):打开替换面板(
Ctrl+H),正则模式开,查找^\s*$\n,替换为空 - 粘贴来的文本可能混着
\r\n和\n:菜单File → Line Endings → Unix (LF)统一为\n
要用逗号、竖线或不留分隔符?别碰 Ctrl+J
join_lines 的分隔符写死为空格,改不了。唯一可靠路径是正则替换:
- 选中目标区域(或全选
Ctrl+A) - 按
Ctrl+H打开替换面板,点亮.*按钮启用正则模式 - 查找框填
\r?\n(兼容\n、\r\n所有变体) - 替换框填你要的分隔符,比如
,、|或留空 - 若只想处理选区,按
Alt+R开启「在选区中替换」,避免误动全文 - 关掉
Match Case和Whole Word,否则可能漏匹配
真正容易被忽略的耦合点
你看到的“合并失败”,90% 是换行符类型(\r\n vs \n)和行尾空白(空格/Tab)共同作用的结果。不是命令有问题,而是这两者让 join_lines 的行为变得不可预测——比如某行末尾有空格 + \r\n,合并后就变成两个空格;又或者空行夹在中间,直接产出 word1 word2(中间一个空格)。











