
Sublime Text 本身没有“压缩代码为单行”的一键命令,但有三种可靠路径:用 Ctrl+J 快速合并(带空格)、用正则替换换行符(自定义分隔符)、或装 SublimePrettyJson 插件专压 JSON。选哪种,取决于你处理的是什么内容、要不要保留语义空格、以及是否接受插件依赖。
用 Ctrl+J 合并多行,为什么有时没反应?
这不是功能坏了,是 Sublime 对「选中」极其较真:
- 必须显式选中**至少两行完整内容**(含行尾换行符),仅靠光标在行尾 +
Ctrl+J只会合并当前行和下一行 - 用鼠标拖选时,最后一行要拖到行尾空白处,否则可能漏掉换行符,导致只触发单次拼接
- 中文输入法常劫持
Ctrl+J,切回英文输入法再试 - 被折叠的代码块不会参与
join_lines,得先展开 - 空行也会被当“一行”合并,结果出现
foo bar(两个空格),不是 bug,是行为一致
用正则替换换行符,\n 还是 \r?\n?
直接搜 \n 在跨平台场景下大概率漏匹配——从 Windows 复制的文本带 \r\n,而 Sublime 的正则默认不把 \r\n 当一个原子单位处理。
- 安全写法是搜
\r?\n:问号表示\r可选,覆盖 Unix(\n)和 Windows()换行 - 如果想兼容更杂的粘贴源(比如终端、浏览器、IDE),可写
\r\n|\n|\r,但多数情况\r?\n足够 - 替换框里留空 → 纯压缩;填
,→ 得到逗号分隔;填(一个空格)→ 效果类似Ctrl+J,但能控制空格位置 - 别忘了勾选
.*按钮启用正则模式,否则\r?\n就是字面字符串
压缩 JSON 用 SublimePrettyJson,Ctrl+Alt+M 不生效怎么办?
这个插件的压缩逻辑是「移除所有空白+换行+注释」,不是简单删 \n,所以它比通用替换更干净,但也更专一——只对合法 JSON 生效。
- 确保光标落在 JSON 内容里,且整个选区是语法正确的 JSON(可用
Ctrl+Shift+P→JSON: Validate先检查) - 快捷键因系统而异:
Ctrl+Alt+M(Windows/Linux)、Cmd+Alt+M(macOS),可在Default (Windows).sublime-keymap里查证 - 如果 JSON 里混了注释(如
//或/* */),SublimePrettyJson默认不支持,会报错或跳过——得先手动删注释,或换用JSFormat插件 - 它不处理非 JSON 内容,比如 HTML 中的
script块或模板字符串里的 JSON 片段,得先单独提取出来
真正容易被忽略的是:Sublime 不区分「用户输入的换行」和「剪贴板带进来的换行」,而不同来源的换行符类型可能混在一起。一次替换不干净,往往不是正则写错了,而是没意识到当前文本里同时存在 \n 和 \r\n ——先用 Ctrl+H 搜 \r 看看有没有残留,比反复试 \n 更省时间。











