sublime如何快速合并行_Sublime合并多行为一行快捷键【技巧】

2次阅读

Ctrl+J仅合并选区或光标所在行与下一行,不支持全局合并;空行需提前清理,多行转分隔符推荐正则替换r?n,含特殊字符时用列编辑更安全,高频操作可绑定自定义快捷键。

sublime如何快速合并行_Sublime合并多行为一行快捷键【技巧】

Ctrl+J 是最快捷的合并方式,但只对选区生效

sublime Text 没有“全局一键合并所有行”的命令,join_lines 命令(快捷键 Ctrl+J / Cmd+J)只作用于你当前**手动选中的文本块**。没选中任何内容时,它只会合并光标所在行与下一行——这不是 bug,是设计行为,但容易误以为“失灵”。

  • 必须先用鼠标拖选、或 Shift+↓ 扩展选区,再按 Ctrl+J;否则只会动两行
  • 合并后每行之间插入一个空格,且会自动 trim 行首尾空白,但**不清理中间多余空格**(比如原行末有缩进或空格,可能变成 foo bar
  • 空行也会被压成一个空格,若原始数据含空行,结果会出现异常间隔,建议提前执行 Ctrl+Shift+P → Remove Empty Lines

要用逗号/分号连接?正则替换比改空格更可靠

想把多行转成 a,b,cselect * FROM t1; SELECT * FROM t2; 这类格式,别先按 Ctrl+J 再手动替换空格——空格位置不可控,且容易漏掉行首尾残留空白。

  • 直接打开替换面板:Ctrl+Hwindows/linux)或 Cmd+HmacOS)
  • 点击右上角 .* 启用正则模式
  • 查找框填:r?n(兼容 windows/macOS/Linux 所有换行符)
  • 替换框填:, (逗号+空格)或 ;(分号无空格),视需求而定
  • ⚠️ 注意:如果最后一行末尾有换行符,替换后会多出一个逗号或分号,可后续执行 Ctrl+Shift+P → Trim Trailing White Space 清理

列编辑适合带引号、逗号等特殊字符的字段拼接

当每行是 "apple, inc""banana "ripe"" 这类含转义、嵌套分隔符的字符串时,全局替换 n 会破坏结构。这时该放弃正则,改用列编辑手动控制连接点。

  • 按住 Alt(Windows/Linux)或 Cmdmacos),鼠标从第一行末尾垂直拖到最后一行末尾
  • 松开后,每行末尾出现独立光标,此时输入 , 即可为所有行末添加逗号
  • 再全选这些换行符(列选中换行符位置),按 delete 删除——相当于“精准砍掉换行,保留手动加的逗号”
  • 此法绕过解析逻辑,安全但仅适合几十行以内;行数一多,列选容易偏移,反而更费时间

高频使用建议绑定自定义命令

如果每天都要处理 csv 列表、sql IN 子句或日志拼接,重复点开替换面板太慢。可以自定义一个 join_with_comma 命令并绑定快捷键,比如 Ctrl+Alt+J

  • 通过 Tools → Developer → New Plugin… 创建插件,或直接编辑 Preferences → Key Bindings
  • 在用户键位文件中添加:
    [{"keys": ["ctrl+alt+j"], "command": "replace", "args": {"find": "\r?\n", "replace": ", ", "regex": true}}
  • 注意:正则中的反斜杠要双写(\r?\n),否则不生效
  • 插件方案更灵活(如跳过空行、自动去重),但键位绑定已覆盖 90% 场景

真正容易被忽略的是换行符差异和空行干扰——不是 Ctrl+J 不好用,而是它默认假设你处理的是“干净段落”。一旦原始文本来自 excel 复制、日志导出或 API 响应,先看一眼行尾有没有 ^Mr),再决定用 r?n 还是 n,省得替半天还多出乱码。

text=ZqhQzanResources