默认Ctrl+F搜索整个文件,需手动启用“Search in selection”:临时点查找面板右下角按钮勾选,或永久配置"auto_find_in_selection": true;Ctrl+H替换不自动继承选区,须先Ctrl+F确认“in selection”状态后再按Ctrl+H。

怎么让查找自动限制在当前选中文本里
默认情况下,哪怕你用鼠标或 Ctrl+D 选中了一段代码,按 Ctrl+F 仍会搜整个文件。必须显式启用「Search in selection」,否则很容易误改其他地方。
两种启用方式:
- 临时:打开查找面板(
Ctrl+F),点击右下角按钮 → 勾选Search in selection - 永久:在用户配置(
Preferences → Settings – User)中添加"auto_find_in_selection": true,之后只要存在选区,查找就自动限定范围
注意:auto_find_in_selection 对 Ctrl+H(替换)也生效,但对 Ctrl+Shift+F(全局搜索)完全无效——它根本不读取编辑器内的选区。
为什么 Ctrl+H 替换不继承选区限制
即使已启用 auto_find_in_selection,Ctrl+H 打开的替换面板也不会自动继承当前选区范围。它只复用上一次 Ctrl+F 的上下文,包括是否启用了选区限制。
常见错误流程:
- 选中一段 HTML →
Ctrl+F输入class=→ 确认高亮都在选区内 - 再按
Ctrl+H→ 替换框里却匹配了全文件
正确做法:
- 先选中目标区域
-
Ctrl+F输入关键词 → 确保状态栏显示“in selection”或右下角按钮已点亮 - 再按
Ctrl+H,此时替换才真正受限于选区 - 如果中途切换过光标或取消选区,必须重新选中并重复
Ctrl+F步骤
多行选区 + 正则替换时 ^ 和 $ 怎么算
正则中的 ^ 和 $ 在选区内是按「逻辑行」计算的,不是物理文件行。这意味着:
- 若选区以换行符结尾,
$能匹配到末尾;否则可能失效 - 比如想把每行开头的
console.log改成debugger,写^console\.log是对的,但如果最后一行没带换行符,它可能被漏掉
保险做法:
- 选中时多拖一行空白(确保末尾有
\n) - 或改用
\nconsole\.log配合Replace All,避开对行首锚点的依赖
全局查找(Ctrl+Shift+F)的 Where 字段到底填什么
Ctrl+Shift+F 的范围完全由 Where 字段控制,和编辑器内有没有选区无关。很多人填空就点 Replace All,结果只改了几个已打开的文件——因为留空等价于“只搜当前已打开的标签页”,不是“整个项目”。
常用写法:
-
.:表示整个项目(必须是单个英文点,不是./或./src) -
., -node_modules/, -dist/:排除指定目录,注意统一用正斜杠/,Windows 上也一样 -
./src/**/*.ts, ./tests/**/*.ts:逗号分隔,精准锁定 TypeScript 文件
关键点:右下角状态栏出现类似 ~/my-project/ 的路径,才算真正进入项目模式;否则 Where 字段会灰显或只显示 Open Files。











