Ctrl+J 仅连接当前行与下一行,不依赖选区行数;需确保光标位置、换行符被选中、英文输入法、无多光标,且提前清理行尾空格、伪空行、混合换行符。

Ctrl+J 为什么按了只合并两行或没反应
因为 join_lines 命令根本不是“合并选中行”,而是“连接当前行与下一行”——它不看选区有多少行,只看光标位置和是否显式包含换行符。没选中任何文本时,它永远只动两行;选中了但最后一行末尾没覆盖换行符(比如光标停在行中而非行尾),它就当你是单行操作。
- 鼠标拖选必须从首行开头拉到末行**末尾之后**(状态栏显示类似
5 lines selected才算生效) - 用
Shift+↓逐行扩展时,最后一行得再按一次↓,否则换行符没被纳入 - 中文输入法(尤其搜狗、百度)常劫持
Ctrl+J或Cmd+J,切英文输入法再试 - 多光标模式(
Ctrl+Click或Ctrl+Shift+L)下,join_lines完全不触发
合并前必须清理的三类干扰项
join_lines 和正则替换都原样保留所有空白字符,所谓“空格乱飞”“单词粘连”,90% 来自这三处没处理:
-
行尾空格/Tab:装
TrailingSpaces插件后运行TrailingSpaces: Remove from current view,或手动执行Ctrl+Shift+P→Trim Trailing White Space -
伪空行:用正则
^\s*$\n全局替换为空,能干掉纯空行 + 只含空格/Tab 的“假空行”(^$\n会漏) -
混合换行符:从 Excel、网页粘贴来的文本常混着
\r\n和\n,先执行File → Line Endings → Unix (LF)统一为\n
需要逗号、无空格或跳过注释?别碰 Ctrl+J
join_lines 的分隔符写死为空格,无法修改。真要控制输出格式,唯一可靠路径是正则替换:
- 打开
Ctrl+H(Windows/Linux)或Cmd+H(macOS),勾选.*启用正则模式 - 查找框填
\r?\n(兼容\n、\r\n所有变体) - 替换框按需填:
,(逗号加空格)、|(竖线)、(留空,无缝拼接) - 若只想处理选区,按
Alt+R开启「在选区中替换」,避免误动全文
Python/JS/JSON 合并后报错?这不是快捷键问题
join_lines 不识别语法,只做机械拼接:
- Python 中
if x > 0:\n print("ok")合并成if x > 0: print("ok")→ 缩进错乱,PEP8 报警 - JS 对象
{\n key: val\n}合并成{ key: val }→ 漏掉换行后必需的逗号或空格,解析失败 - 带
# comment的行合并后,下一行直接怼到注释后,变成无效代码
真正卡住人的从来不是“怎么按”,而是合并前没意识到:空行、缩进、行尾空格、混合换行符、输入法状态——这些全得手动干预,Sublime 不会替你猜意图。


















