Sublime的“仅在选区中查找”需先有选区再打开替换面板并启用该模式,否则无效;无全局配置项,可通过自定义快捷键实现默认限定搜索。

选中后按 Ctrl+H 才真正生效
Sublime 的“仅在选区中查找”不是默认行为,必须先有选区,再打开替换面板并启用该模式,否则它会退回到全文搜索。
- 没选中文本时,哪怕你点了
In Selection按钮,也毫无作用——面板底部不会显示“in selection”提示,搜索结果仍是整个文件 - 快捷键
Alt+S(Windows/Linux)或Option+S(macOS)只在替换面板已打开且存在有效选区时才切换状态 - 如果你用
Ctrl+H打开的是“查找”面板(只有 Find 输入框),得先点右下角的Replace按钮展开替换栏,再按Alt+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参数被忽略,不会报错也不会提示
选区跨行或含空格时,正则模式更可靠
普通字符串查找对换行符、首尾空格、缩进敏感,容易漏匹配;开启正则后,可以用 [\s\S] 或 .*? 更稳地捕获整块结构。
- 比如你想替换一段 HTML 片段:
<div class="header">.*?</div>,勾选.*按钮后才能跨行匹配 - 若选区开头有缩进、结尾有换行,不启用正则时,
Find输入框里粘贴的内容可能因空格/换行不一致而找不到 - 此时建议复制选区 → 开启正则 → 在
Find中粘贴 → 点击Find All in Selection,比手动敲空格更准
别信“自动识别上下文”,选区边界就是硬限制
Sublime 不会帮你“智能延展”选区去覆盖语义完整的函数体或 JSON 对象,它只认光标拖出来的字节范围。
- 你选了 5 行 JS 代码,但第 6 行有个
}属于这个函数——它不会被包含,除非你手动把那一行也拉进来 - 在 JSON 或 YAML 中,如果选区切在某个字符串中间,
Replace All in Selection可能破坏引号配对,导致语法错误 - 遇到结构化内容,先用
Ctrl+Shift+P→ 输入Expand Selection to Brackets(或类似命令)扩到完整块,再操作

















