ctrl+j 是 sublime text 合并相邻两行的默认快捷键,光标需位于行尾或下一行首;有选区时合并所选行,支持通过自定义键绑定调整分隔符,多行合并推荐先选中再操作。

用 Ctrl+J 合并两行最直接
Sublime Text 内置的 Ctrl+J(Windows/Linux)或 Cmd+J(macOS)就是专为合并相邻行设计的快捷键。光标停在任意一行末尾或下一行开头,按一下就自动删掉换行符、加一个空格连接——这是默认行为,不用装插件、不改配置。
常见错误现象:按了没反应 → 检查是否选中了多行(Ctrl+J 在有选区时会“连接选中行”,不是合并光标所在两行);或者光标在行首却想合并上一行,这时得先把光标移到上一行末尾再按。
- 只对「当前行 + 下一行」生效,不能跨多行批量合并
- 合并后会在两行内容间插入一个空格,如果不需要空格,得手动删或改键绑定
- 若文件是只读或被其他程序占用,
Ctrl+J会静默失败,无提示
想删换行但不加空格?改键绑定或用正则替换
默认加空格是为了避免单词粘连(比如把 hello\nworld 变成 helloworld),但有时你就是要紧贴拼接(如拼 SQL 字符串、URL 路径)。这时候靠改快捷键更高效,而不是每次手动删空格。
打开 Preferences > Key Bindings,在用户键绑定里加这条:
[
{ "keys": ["ctrl+alt+j"], "command": "join_lines", "args": {"separator": ""} }
]
之后用 Ctrl+Alt+J 就能无空格合并。
-
separator参数支持任意字符串,比如设成" + "可用于拼接表达式 - 注意别覆盖已有快捷键,
Ctrl+Alt+J在部分中文输入法下可能冲突 - 如果只是偶尔需要,用
Ctrl+H打开替换面板,查找\n、替换为空,更轻量
合并多行怎么办?别硬按多次 Ctrl+J
要合并 5 行,连按 4 次 Ctrl+J 容易漏或手滑。更稳的方式是先选中目标行范围,再触发合并命令。
操作步骤:
- 把光标放在第一行开头,按住
Shift点击最后一行末尾,完整选中所有行(含换行符) - 按
Ctrl+J—— 此时它会把整个选区里的换行全替换成空格 - 如果选区里有空行,
Ctrl+J会保留它们(变成空格+空行),需提前用Ctrl+Shift+L拆行后清理
注意:选中时若包含行首缩进,合并后缩进会变成普通空格,可能破坏代码结构,建议先用 Ctrl+Shift+P 运行 Indentation: Convert Indent to Spaces 统一处理。
为什么有时 Ctrl+J 合并后格式乱了?
根本原因是 Sublime 默认把「合并」和「重排版」逻辑耦合了。比如在 JSX 或 Python 中,合并后自动补括号、调整缩进,反而让原始意图失效。
典型场景:
- 正在写 HTML 标签,想把
<div> 和 <code><p>xxx</p>合成一行,结果Ctrl+J把<p></p>缩进塞进了<div> 里面 <li>Python 里合并两行赋值语句,触发了自动 PEP8 格式化,加了多余空格</li> <p>解决方法:临时禁用格式化插件(如 <code>JsPrettier、AutoPEP8),或在用户设置里关掉"join_lines_add_space": false(仅影响空格,不影响缩进逻辑)。真正难处理的是嵌套结构里的合并——比如想把 JSON 对象的两行 key-value 合成一行,不如直接切到正则替换模式,搜
:\s*\n\s*"替换为: ",更可控。










