Sublime中合并多行成一行用Ctrl+J(Win/Linux)或Cmd+J(macOS),即内置“Join Lines”功能,仅作用于选中文本,默认以空格连接;需先清理空行和尾部空格,特殊需求如转JSON可用正则替换。

怎么用 Sublime 合并多行成一行(去掉换行)
直接选中要合并的多行,按 Ctrl+J(Windows/Linux)或 Cmd+J(macOS),就能一键把换行符替换成空格并合并。这是 Sublime 内置的「Join Lines」功能,不是插件,不用装、不卡顿。
常见错误是先手动删掉每行末尾的换行符——这既慢又容易漏;或者误用「Replace All」全局替换 \n,结果把文件里所有换行都干掉了,包括段落之间该留的。
- 只对当前选中文本生效,没选中就作用于整行(慎用)
- 默认用空格连接,如果想用逗号或无分隔符,得先替换选区里的
\n为对应字符,再Ctrl+J - 如果某行末尾有空格,
Ctrl+J会保留它,可能造成多余空格,建议合并前用Ctrl+Shift+P→Trim Trailing White Space
如何批量删除空行后再合并(清理后再连)
真实场景里,多行文本常夹着空行和缩进,直接 Ctrl+J 会把空行变成多余空格甚至制表符。得先过滤干净。
推荐两步走:先正则删空行,再合并。打开「Find → Replace」,勾上 .*(正则模式),查找 ^\s*$\n,替换为空(留空),点 Replace All。注意 ^\s*$\n 能匹配纯空行和只有空白符的行,但不会误伤带内容的行末空格。
-
\s包含空格、制表符、换行符,^$锚定行首行尾,所以^\s*$是安全的空行判定 - 别用
^$\n,它漏掉含空格或 tab 的“伪空行” - 替换后光标可能跳到文件开头,记得重新选中目标区域再按
Ctrl+J
合并时保留换行符作为分隔符(比如转 JSON 数组)
有时候你不是真要“消灭换行”,而是要把每行当一个元素处理,比如把日志行转成 ["a", "b", "c"]。这时候不能用 Ctrl+J,得靠正则和引用。
选中所有行 → 打开 Replace → 正则模式 → 查找 ^(.+)$,替换为 "$1",再查 \n 替换为 , ,最后手动加首尾 [ 和 ]。关键在 ^ 和 $ 必须开启「. matches newline」关闭状态,否则 ^ 会跨行错位。
- Sublime 默认正则不跨行,所以
^(.+)$每次只匹配一行,$1就是那行内容 - 如果开了「. matches newline」,
.+可能吞掉多行,结果全合成一个字符串 - 替换完记得检查首尾有没有多余逗号,JSON 不认的
为什么有时 Ctrl+J 没反应或合并出错
大概率是光标状态不对:没选中任何文本,且当前行是最后一行,或光标在行首/行尾位置异常。Sublime 的 Join Lines 对上下文敏感,不是无脑拼接。
- 确保至少选中两行,或光标在非末行的任意位置(它会自动把下一行接上来)
- 如果当前行末尾是注释(如 Python 的
#或 JS 的//),Ctrl+J可能失败或截断,先删注释再操作 - 某些语法高亮模式(如 Markdown 的列表项)会让 Sublime 把换行当成结构标记,此时
Ctrl+J会失效,可临时切到 Plain Text 模式再试
最麻烦的是混合了 DOS(\r\n)和 Unix(\n)换行符的文件,Ctrl+J 在不同系统行为不一致。遇到这种,先统一换行符:File → Line Endings → Unix (LF) 或 Windows (CRLF),再操作。










