join_lines 命令仅在选区严格包含每行末尾换行符时才批量合并多行,否则默认只合并光标所在行与下一行;需清除行尾空白、统一换行符并禁用中文输入法以确保正常工作。

join_lines 命令能实现多行合并成一行,但不是“选中就按 Ctrl+J 就完事”——它只在严格满足选区条件时才批量处理全部目标行,否则默认只连当前行和下一行。
为什么 Ctrl+J / Cmd+J 按了没反应或只合并两行
这不是功能坏了,是 join_lines 对选区有硬性要求:
- 没选中任何文本时,它只会把光标所在行和紧邻的下一行拼起来(不删换行符,也不管你后面还有多少行)
- 选区必须包含每行末尾的换行符:用鼠标拖选要从首行开头拉到末行**末尾之后**(看到光标跳到下一行开头才算包住换行符);用
Shift+↓逐行扩展时,最后一行得按一次↓让光标落到空行或下文开头,否则末行换行符没被选中 - 中文输入法常拦截
Ctrl+J或Cmd+J,切英文输入法再试 - 多个光标分散在不同行(比如
Ctrl+Click或Ctrl+Shift+L后),join_lines不识别为多行选区,而是对每个光标单独执行“连下一行”,结果错乱
合并前必须清理的两个干扰项
join_lines 不做预处理,原样保留行尾空格、制表符和空行,合并后出现多余空格或单词粘连,基本都源于此:
- 先执行
Ctrl+Shift+P→ 输入Trim Trailing White Space,清除所有行尾空白;否则foo <space>\nbar会变成foo <space> bar - 空行不能留:打开替换面板(
Ctrl+H),正则模式开,查找^\s*$\n,替换为空 —— 这比^$\n更可靠,能干掉含空格或 Tab 的“伪空行” - 如果文本是从 Excel、微信或日志里粘贴来的,换行符可能混着
\r\n和\n,建议先统一换行符:File → Line Endings → Unix (LF)
想用逗号、竖线或不留分隔符?别碰 Ctrl+J
join_lines 的分隔符写死为空格,改不了。需要自定义分隔符,唯一可靠路径是正则替换:
- 选中目标区域(或全选
Ctrl+A) - 按
Ctrl+H打开替换面板,点亮.*按钮启用正则模式 - 查找框填
\r?\n(兼容 Windows/macOS/Linux 所有换行变体),替换框填你要的分隔符,比如,、|或留空 - 若只想替换选区内的换行,按
Alt+R开启「在选区中替换」,避免误动全文 - 注意关掉
Match Case和Whole Word,否则可能漏匹配
真正容易被忽略的耦合点
你看到的“合并失败”,90% 是换行符类型(\r\n vs \n)和行尾空白(空格/Tab)共同作用的结果。不是命令有问题,而是这两者让 join_lines 的行为变得不可预测——比如某行末尾有空格 + \r\n,合并后就变成两个空格;又或者空行夹在中间,直接产出 word1 word2(两个空格)。处理前先统一换行符、再清尾部空白,比反复调试快捷键有效得多。

















