Ctrl+J/Cmd+J 是 join_lines 命令,仅在显式选中含换行符的多行时批量合并,否则仅合并光标所在行与下一行;需英文输入法、确保选区包含末行换行符,并清理空行、行尾空格及统一换行符。

Ctrl+J / Cmd+J 不是“一键合并选区”,而是 join_lines 命令
它只在你**显式选中完整多行(含每行末尾的换行符)**时才批量生效;没选中任何文本时,它只会把光标所在行和下一行拼起来——这不是 bug,是设计逻辑。常见“按了没反应”,其实是光标静止、没选中、或中文输入法拦截了快捷键。
- Windows/Linux 按
Ctrl+J,macOS 按Cmd+J,但必须先确保输入法为英文状态 - 鼠标拖选时,要拉到最后一行**末尾之后**(光标跳到下一行开头才算包住换行符)
- 更稳的方式:光标放首行开头 → 连续按
Shift+↓选中目标行 → 最后一次再按一次↓,让光标落到空行或下文开头,确保末行换行符被包含 - 若装了
Emacs Pro Essentials或Text Pastry等插件,它们可能重绑了join_lines,可在Preferences → Key Bindings中搜join_lines确认是否被覆盖
空行和行尾空格会让 join_lines 输出异常
join_lines 不做预处理,遇到空行会塞进一个空格,遇到行尾空格会原样保留,结果常是 item1␣␣item2 或 if x:␣␣␣␣print("ok") ——看着像失败,其实是干扰项没清理。
- 先清空行:打开
Ctrl+H/Cmd+H,勾选.*(正则模式),查找^\s*$\n,替换为空,点Replace All - 再清行尾空格:按
Ctrl+Shift+P→ 输入Trim Trailing White Space执行;更省心可装TrailingSpaces插件,自动标红并一键清除 - 若文本来自网页或 Excel,大概率混着
\r\n和\n,建议统一换行格式:File → Line Endings → Unix (LF)
要逗号/无分隔符/拼 SQL?别碰 Ctrl+J,走正则替换
join_lines 的分隔符写死为空格,无法定制。真要控制输出格式,唯一可靠路径是限定选区后用正则替换 \r?\n。
- 先选中目标文本块(避免误改全文)
- 按
Ctrl+H/Cmd+H,点亮.*按钮启用正则模式 - 查找框填
\r?\n(兼容\n、\r\n所有变体) - 替换框按需填:
,(逗号)、(空格)、|(竖线)或留空(无缝拼接) - 如只想替换选区内容,按
Alt+R开启「在选区中替换」
最常被忽略的耦合点:换行符混用 + 行尾空格
哪怕你用对了 \r?\n,只要某行末尾带空格,替换后就是 item1␣,item2;哪怕你清了空行,若某行是缩进开头(比如 Python 的 4 空格),合并后就变成 if x:␣␣␣␣print("ok"),语义已破坏。这些不是操作步骤问题,而是你没意识到 Sublime 默认不标出空格、不统一换行、不猜测你的意图——它只机械执行,干扰项全得手动干预。


















