Ctrl+J/Cmd+J是Sublime Text默认合并行快捷键,无需设置;但仅当满足硬性前提(如选区含换行符、无空行、英文输入法、光标不在空行末尾)时才生效,分隔符固定为空格,自定义需用正则替换。

Ctrl+J / Cmd+J 就是默认合并行快捷键,不用“设置”
Sublime Text 没有「开启合并功能」或「配置分隔符」的开关,join_lines 命令从安装起就已绑定在 Ctrl+J(Windows/Linux)或 Cmd+J(macOS)上。你不需要改配置、装插件、重启编辑器——只要满足触发条件,它立刻生效。
但多数人按了没反应,不是快捷键失效,而是没满足它的硬性前提:
- 没选中任何文本 → 它只合并「光标所在行 + 正下方一行」,不会动其他行
- 选区未包含换行符 → 用鼠标拖选时没拉到行尾,
join_lines不识别为多行选中 - 中文输入法处于激活状态 → 快捷键被系统拦截,毫无反馈(尤其 macOS 上的搜狗、百度输入法)
- 光标停在空行或文件末尾 → 下一行不存在,命令静默跳过
想改分隔符?不能改,得绕开 join_lines
join_lines 的分隔符写死为空格,无法通过设置项、用户偏好或插件参数修改。所谓“自定义快捷键实现逗号合并”,本质是把正则替换流程封装成新命令,不是真改了 join_lines。
如果你需要逗号、分号、无缝拼接或保留缩进逻辑,必须走正则路径:
- 先选中目标行(确保含换行符,无空行干扰)
- 按
Ctrl+H(Win/Linux)或Cmd+H(macOS)打开替换面板 - 点击右上角
.*启用正则模式 -
Find What填?(兼容、所有换行) -
Replace With填你要的:,、;、(手动敲一个空格)、或留空 - 务必勾选
In Selection(快捷键Alt+R),否则会全局替换
为什么自己绑快捷键容易翻车
有人查资料后去 Preferences → Key Bindings 新增一条绑定,比如:
{ "keys": ["ctrl+alt+j"], "command": "replace", "args": { "find": "\r?\n", "replace": ",", "in_selection": true } }
这看似省事,实际问题一堆:
-
replace命令不检查是否已选中内容,没选区时会报错或静默失败 - 没启用正则标志,
\r?\n会被当字面量,根本匹配不到换行符 - 没处理
和混用场景,某些行换行符漏掉 - 替换后若最后一行末尾有换行符,会多出一个逗号,得再手动删
真要高频使用,不如记熟 Ctrl+H → .* →
?
→ , → Alt+R → Replace All 这套动作——比调试自定义键绑定快得多,也更可控。
最常被忽略的其实是换行符和空格耦合
你看到合并结果是 foo␣,␣bar(中间多个空格),往往不是快捷键或正则写错了,而是某行末尾本来就有空格,
?
替换后变成 foo␣,bar,肉眼难辨。
解决办法不是反复调快捷键,而是合并前做两件事:
- 装
TrailingSpaces插件:自动标红所有行尾空格/Tab,按Ctrl+Shift+P→TrailingSpaces: Remove from current view一键清空 - 统一换行符:按
Ctrl+Shift+P→ 输入Set Line Endings→ 选Unix (LF),避免和混用导致正则漏匹配
这些前置清理不做,后面怎么调快捷键都白搭。


















