Sublime Text 的 join_lines 命令(Ctrl+J/Cmd+J)可将显式选中的多行合并为一行,但仅响应完整行选中(含换行符),且分隔符固定为空格;需自定义分隔符时须用正则替换,合并前应清理行尾空格、空行及输入法干扰。

Sublime Text 本身没有“一键多行合并为一行”的独立命令,但 join_lines 命令就是干这个的——只要选对了行、清掉了干扰项,按 Ctrl+J(Windows/Linux)或 Cmd+J(macOS)就能立刻生效。
为什么 Ctrl+J 按了没反应或只合并了两行
这不是功能失效,而是 Sublime 对“选中状态”极其严格:join_lines 只响应「显式多行选中」,不是光标在哪儿、也不是多光标分散状态。
- 必须用鼠标拖选完整行(含行尾换行符),或按
Ctrl+L多次逐行添加选中 —— 单靠Shift+↑/↓容易漏掉行尾,导致只触发“当前行+下一行”拼接 - 如果用了中文输入法,
Ctrl+J常被拦截;切换到英文输入法再试 - 有代码折叠区域时,
join_lines不处理不可见内容,会跳过被折叠的行 - 选区里包含空行?它会把空行也当一行合并,结果出现
word1 word2(两个空格),不是 bug,是行为一致
想用逗号、竖线或不留空格,不能靠 Ctrl+J
join_lines 的分隔符写死为空格,改不了。需要自定义分隔符,就得切到正则替换流程,这是唯一可靠路径。
- 先选中目标多行(或全选
Ctrl+A) - 按
Ctrl+H打开替换面板,点亮.*按钮启用正则模式 - 查找框填
\r?\n(兼容 Windows/macOS/Linux 换行符),替换框填你要的分隔符,比如,或|或留空 - 如果只想替换选区内的换行,按
Alt+R开启「在选区中替换」,避免误动全文
合并后一堆多余空格?大概率是行尾空格没清理
Sublime 默认不标出 (空格)和 \t(制表符),但 join_lines 和正则替换都会原样保留它们。你看到的“合并失败”,其实是 apple banana 这种肉眼难辨的空格堆积。
- 装
TrailingSpaces插件:Package Control 安装后自动高亮所有行尾空格(变红),按Ctrl+Shift+P→TrailingSpaces: Remove from current view一键清空 - 不装插件?手动执行
Ctrl+Shift+P→Trim Trailing White Space,但只清当前光标所在行,不够彻底 - 正则预处理更狠:查找
[ \t]+$(行尾空格和 tab),替换为空,再跑join_lines或替换换行符
真正卡住人的从来不是“怎么合并”,而是合并前没意识到:空行、缩进、行尾空格、混合换行符(\r\n 和 \n 并存)、输入法状态——这些全得手动干预,Sublime 不会替你猜意图。

















