先说几个关键要点。在 Sublime Text 里,如果你想全局搜索所有已经打开的文件——包括那些还没保存的 untitled 标签页——Ctrl+F 是行不通的。你必须使用 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS),并且在 Where 输入框里手动填入 open_files。这几乎是唯一可靠的方法,其他任何写法都不起作用。
为什么 Ctrl+F 不行,而 Ctrl+Shift+F 要填 open_files?
这事儿得从 Sublime 的设计逻辑说起。Ctrl+F 天然只作用于当前激活的那个标签页,这不是 bug,而是设计如此。而 Ctrl+Shift+F 是“Find in Files”功能,它默认搜索的是整个项目目录(.),而不是你的标签页列表。要让这个全局搜索功能只钻到当前打开的文件里,就必须显式告诉它——在 Where 里输入 open_files。这个关键字很特别,它不支持通配符,不响应排除规则,也不受 folder_exclude_patterns 的影响。它只看你的 Tab 栏里现在有哪些文件开着。
- 填
open_files后,未保存的untitled文件也能被搜到。这一点很关键。 - 如果左下角状态栏没有显示项目路径(比如你只开了单个文件),
open_files会静默降级,变成只搜那一个文件——这不是报错,只是预期行为。 - 有些插件(比如旧版的
ProjectManager)可能会拦截open_files请求。如果你死活搜不到,可以先临时禁用插件,看是不是干扰所致。
open_files 搜不到?先检查这三件事
那么,如果输入正确却搜不到,问题出在哪儿?多半是环境没对齐。
- 首先,确认 Sublime 是否进入了项目模式。侧边栏要有完整的树形结构,状态栏显示类似
~/my-project/这样的路径。否则,open_files实际只覆盖了当前这一个标签页。 - 其次,检查
Preferences → Settings – User里是否含有"file_exclude_patterns": ["*.tmp"]这类配置。未保存的文件虽然没有后缀名,但 Sublime 对untitled的处理逻辑比较特殊,部分排除规则仍可能误伤它。 - 最后,检查有没有其他快捷键冲突。macOS 上
Cmd+Shift+F可能被系统的 Spotlight 占用,你需要在系统设置里把它禁用掉。
替换后内容丢了?你根本没保存
这是最容易被忽略也是后果最严重的一步。Sublime 的全局替换不会自动标记文件为“已修改”,也不会触发任何保存提示。所有更改都只留在内存里,标签页右上角甚至不会出现那个代表有未保存内容的 *,而 Ctrl+S 也只保存当前激活的那个文件。
- 替换完成后,必须手动执行
File → Sa ve All。快捷键是:先按Ctrl+K(松开),再按Ctrl+B(Windows/Linux);macOS 上是Cmd+K→Cmd+B。 - 如果你忘了这步就直接关掉 Sublime,所有替换内容会立即清空,不会有任何警告或撤销历史等着你。
- 在做这类高风险操作前,建议先运行
git stash把当前工作区暂存起来。替换完后,用git diff看真实的改动变化,这比面板里显示的“已替换 X 处”要可信得多。
最常被忽略的是:即使你填对了 open_files、点开了正则、也预览了全部匹配项,只要没按 Ctrl+K→Ctrl+B,那些改动就只是幻影——关掉窗口那一刻,它们就彻底消失了。

必须用Ctrl+Shift+F(Win/Linux)或Cmd+Shift+F(macOS)并手动在Where框填open_files才能搜索所有已打开文件(含untitled),因Ctrl+F仅限当前标签页,而open_files是唯一指定已开Tab的隐式关键字,且需项目模式支持、无插件干扰、无排除规则误拦,替换后须手动Sa ve All否则丢失。