必须先创建有效选区再启用In Selection模式,否则无效;常见失效因选区不包含换行符、含不可见字符或未真正选中文本;正确做法是用Ctrl+L精准选行、Ctrl+H调出替换面板、Alt+S启用限定替换,并可通过快捷键绑定实现一键开启。

必须先有选区,再打开替换面板并启用 in_selection 模式,否则无效——没选中文字时点 In Selection 按钮,面板底部不显示提示,实际仍是全文搜索。
为什么“仅在选区中替换”经常失效?
根本原因在于 Sublime 不会自动推断你“想搜哪块”,它只认字节级选区。常见失效场景:
- 没选中任何文本就按
Ctrl+H→ 即使后面点了In Selection,也无效果 - 选区跨行但没包含换行符(比如鼠标拖到第5行末尾却没进第6行)→ Sublime 当作单行处理
- 选区开头/结尾带不可见字符(空格、缩进、BOM)→ 查找字符串必须完全一致才匹配,普通模式下极易失败
怎么让“只在选区里替换”真正生效?
分两步:先确保选区干净,再用对的面板和参数。
- 选区要“带换行符”:跨行操作时,用
Ctrl+L逐行选中(每按一次加一行),比鼠标拖更稳 - 打开替换面板必须用
Ctrl+H(不是Ctrl+Shift+F),然后右下角点Replace展开完整栏位 - 启用
In Selection:快捷键是Alt+S(Windows/Linux)或Option+S(macOS),但仅在已有有效选区且面板已展开时才可用 - 粘贴内容前建议开启正则(
.*按钮):尤其当选区含缩进、空行或 HTML 片段时,用[\s\S]*?或.*?比纯文本匹配更可靠
想默认打开就限定在选区?靠快捷键,不是改设置
Sublime 没有 "in_selection": true 这类全局配置项,但可通过自定义快捷键绕过手动开关。
- 打开
Preferences → Key Bindings - 在用户配置中添加:
[{ "keys": ["ctrl+shift+h"], "command": "show_panel", "args": { "panel": "replace", "in_selection": true } }] - 保存后,只要光标在文本内且已有选区,按
Ctrl+Shift+H就直接弹出“仅在选区中替换”面板 - 注意:没选区时该快捷键仍会打开面板,但
in_selection参数被忽略,不会报错也不会提示
最常被忽略的一点:Sublime 从不“智能延展”选区——你选了 4 行 JS,但函数闭合的 } 在第 5 行,它就不会被包含。边界就是硬边界,得手动拉进去。

















