Ctrl+J 合并多行字符串前必须清理引号:先删行尾引号(正则 "$→空),再删行首引号(^"→空);转义引号需多光标手动删;空行须提前清除;拼接合法字符串应改用正则替换而非 Ctrl+J。

用 Ctrl+J 合并多行字符串前,必须确保引号位置干净
Sublime 的 join_lines 命令(Ctrl+J)不会识别引号语法,它只机械拼接换行符和空白。如果每行末尾已有引号(如 "line1"、"line2"),合并后会变成 "line1""line2",Python/JS 解析直接报错。
- 先删掉所有行尾引号:用正则
"$→ 空(勾选.*),再删行首引号:^"→ 空 - 若引号被转义(如
"line\"1"),正则"$会漏掉,此时改用多光标:按Ctrl+Shift+L拆光标 → 多次按→移到行尾 →Backspace删引号 - 别跳过空行:空行参与
Ctrl+J后会插入多余空格,用正则^\s*$\n先清掉
想保留引号并拼成合法字符串?别用 Ctrl+J,走正则替换
原生 join_lines 不支持自定义分隔符,也无法自动补引号。要拼出 "line1 line2 line3" 这种格式,必须用替换面板手动控制边界。
- 查找:
\r?\n(匹配所有换行变体) - 替换:
(一个空格)→ 得到带空格的单行,但无引号 - 再查:
^(.+)$→ 替换为:"$1",给整行加双引号 - 如果原始行已含引号(如
"foo"和"bar"),先用^"(.+)"$→$1提取内容,再统一加引号 - 注意:勾选
In selection,否则会误改全文
处理 Python 三引号字符串时,Ctrl+J 会破坏语法结构
对 """line1\nline2\nline3""" 直接按 Ctrl+J,结果是 """line1line2line3"""(换行符消失),语义不变但可读性崩坏;更糟的是,若中间有注释或缩进不齐,可能触发 IndentationError。
- 安全做法:选中三引号块内所有行(不含开头
"""和结尾"""),用正则\r?\n→合并内容部分 - 避免跨行字符串被切开:不要用列选择(
Alt+拖拽),它认像素列,Tab/空格混用会导致光标落在引号中间 - 合并后手动检查缩进:Python 要求三引号内各行缩进一致,否则运行时报
IndentationError: unexpected indent
为什么 ^".*"$ 正则删引号会吃掉整行?
这个正则看起来能“一键清理”,实际极危险:^".*"$ 是贪婪匹配,从行首第一个 " 一直吃到行尾最后一个 ",把 "key": "value" 整行干掉,只剩空行。
- 正确做法永远锚定单点:
^"删行首,"$删行尾,分两步 - 如果行首是
" "(引号+空格),用^"\s*,但得确认后续不需要保留该空格 - JSON 或日志里引号后常跟逗号(
"val",),此时删行尾引号不能只写"$,得用"(?=,|$)(正向先行断言) - 测试务必用三行:一行纯字符串、一行带逗号、一行空引号
"",看是否都符合预期


















