Ctrl+Shift+L 多光标需先选中多行(状态栏显示“x lines selected”),否则仅作用于单行;跨行参数处理须用(?s)和\R;替换后必须手动Save All,否则更改丢失。

Ctrl+Shift+L 生成光标前,必须先选中目标行
很多人按 Ctrl+Shift+L 没反应,或只在第一行出现光标——这不是快捷键失效,而是 Sublime 根本没收到“多行”信号。它只对含换行符的选区起作用,鼠标拖选停在某行末尾(没跨过 \n),就等同于单行选中。
安全做法是:先用 Ctrl+L 逐行选中(每按一次加一行),确保状态栏显示“x lines selected”,再统一按 Ctrl+Shift+L。如果目标是请求参数所在的连续多行(比如 Axios 的 data 对象),推荐用 Ctrl+F 搜 data: 或 params:,按 Enter 跳到第一处,再按 Ctrl+Shift+L 全选所有匹配项。
- 空行也会被拆出光标,但光标落在行首;若你预期光标都在参数值位置,得手动按
→或运行命令面板里的Move to Column - 若参数缩进不一致(如有的顶格、有的缩进4空格),光标会卡在不同列,直接输入会导致错位——此时该退回去用正则替换
想批量改 key 名(如 user_id → userId),别信 \b
Sublime 的 \b 把下划线和数字当单词字符,\buser_id\b 会错误匹配到 username 或 user_id_list。真正可控的方式是限定上下文:
例如请求体里参数都是 key: value 形式,且前后有空格或换行,可用:(?
替换为 userId。更轻量的做法是勾选 Whole Word + 在查找框里输 user_id (前后带空格),再确认高亮是否只覆盖参数名本身。
- 若参数在 JSON 字符串里(如
"user_id": "123"),需额外转义引号:"user_id"→"userId",注意替换内容里双引号要保留 - 别忘了检查注释里的
user_id—— 它们也会被一并替换,除非你提前用正则排除//或/*行
跨行参数(如多行字符串、嵌套对象)必须用 (?s) 和 \R
默认 . 不匹配换行符,搜 name:.*value 只能捕获单行内的内容。处理跨行请求参数(比如 GraphQL 变量块、YAML body: 下的多行文本),必须开启“点匹配换行”:
方法一:点击查找面板右下角 ↩ 图标(变蓝);
方法二:在正则前加 (?s) 前缀,如 (?s)name:\s*['"]([^'"]*)['"]。
- 换行符统一用
\R,不是\n或\r\n—— 它自动适配 Windows/macOS/Linux 文件格式 - 想删掉整个多行参数块但保留结构?用
(?s)params:\s*\{[^}]*\}替换为空,但务必先Find All看是否误吞了其他{}块 - 捕获缩进很重要:如果想把
user_id:替成userId:,正则得写成^(\s*)user_id:,替换为$1userId:,否则新内容会顶到行首
替换后不保存 = 白干,且无法撤销
点 Replace All 后,所有文件标签页出现星号 * 是正常现象——Sublime 只把变更缓存在内存里。关窗口前没手动保存,改动彻底丢失,没有历史记录可回溯。
必须执行 File → Save All,或快捷键:
Windows/Linux:Ctrl+K → Ctrl+B
macOS:Cmd+K → Cmd+B
- 如果项目很大,Save All 可能卡顿,可先关闭
index_files设置避免扫描无关目录 - 最危险的不是替换错了,而是替换对了却没保存——尤其当你顺手关掉某个标签页时,那个星号就永远消失了











