根本原因是Sublime只认字节级连续选区,不自动推断范围;常见失效包括未选中文本就开面板、跨行未含换行符、首尾含不可见字符、误用Ctrl+F而非Ctrl+H。

为什么“仅在选区中查找”经常没反应
根本原因是 Sublime 不会自动把光标位置或模糊选区当有效范围——它只认字节级、连续、不含空操作的选区。常见失效场景包括:
• 没真正选中任何文本就按 Ctrl+H,哪怕后面点 In Selection 也无效
• 鼠标拖选跨行时没拉进换行符(比如停在第3行末尾,第4行开头没包含),Sublime 当作单行处理
• 选区首尾含不可见字符(缩进空格、BOM、零宽空格),导致查找字符串无法精确匹配
• 用 Ctrl+F 打开的是“查找面板”,不是“替换面板”,In Selection 开关根本不可见
必须用 Ctrl+H 打开替换面板才能启用限定查找
Ctrl+F 只支持高亮和跳转,不支持 In Selection 模式;只有 Ctrl+H(Windows/Linux)或 Cmd+Option+F(macOS)打开的面板才具备该功能。
操作流程必须严格按顺序:
• 先用 Ctrl+L 逐行选中(比鼠标拖更稳,确保含换行符)
• 再按 Ctrl+H 调出替换面板
• 点击右下角 Replace 展开完整栏位(否则 In Selection 按钮不可用)
• 按 Alt+S(Windows/Linux)或 Option+S(macOS)启用模式,面板底部会显示 in selection
想默认只搜选区?靠快捷键绑定,不是改设置
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行——它就不会被包含。这不是 bug,是设计逻辑:
• 替换只发生在你鼠标/键盘实际划出的字节范围内
• 如果需要包含结构边界(比如整个函数块),得手动把光标拖到 } 后再松手,或用 Ctrl+Shift+Space(Expand Selection to Brackets)辅助选中
• 正则模式下可用 [\s\S]*? 匹配含换行的内容,但前提是选区本身已覆盖目标区域


















