Ctrl+R仅在CSS/SCSS文件中可搜索类名,因HTML中class属性值不被解析为符号;搜类名使用处须用Ctrl+Shift+F配合正则,如class\s=\s["']?\bcard\b。

Ctrl+R 只在 CSS/SCSS 文件里有效,HTML 里搜不到类名
Sublime Text 的 Ctrl+R(Windows/Linux)或 Cmd+R(macOS)本质是「当前文件符号跳转」,它依赖语法作用域识别。你在 .html 文件里按 Ctrl+R 输入 header,出来的全是 标签名或 id="header",不是 CSS 类名——因为 HTML 语法下,class="header" 中的 header 不被解析为符号,只是属性值字符串。
真正能用 Ctrl+R 搜类名的场景只有一种:当前文件必须是 .css 或 .scss,且右下角状态栏显示 source.css 或 source.scss。这时输入 btn-primary(不加点),就能定位到 .btn-primary { ... } 定义处。
- 误用
Ctrl+R在 JS/TS/HTML 里搜类名,结果为空或全是无关项 - 想强制识别:按
Ctrl+Shift+P→ 输入Set Syntax: CSS切换语法再试 - 类名含空格、括号、冒号(如
.card:hover)不会出现在符号列表里,Ctrl+R天然不支持
跨文件搜类名使用处,必须上正则 + Find in Files
要查 .card 在哪些 HTML 或 Vue 文件里被实际使用,Ctrl+R 完全没用。得切到全局内容搜索:Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS),并开启正则模式(点击右上角 .* 按钮)。
搜索框填:class\s*=\s*["'][^"']*?\bcard\b[^"']*?["'],Where 填 ./src/**/*.html, ./src/**/*.vue(按你项目结构调整)。
-
\bcard\b确保匹配完整单词,避免命中recard或cardinal -
["'][^"']*?容忍单双引号及中间任意字符(包括其他 class 名) - 别漏掉
class=card这种无引号写法?那就得额外加一行:class\s*=\s*card\b - 如果搜
.text-lg这类带连字符的,正则里直接写text-lg,\b仍生效
Why Ctrl+P + @ 不适合搜 CSS 类名
Ctrl+P 加 @ 是查函数、类、方法等语言级符号,靠的是 Sublime 的轻量索引,对 CSS 类名基本无效。哪怕你装了 JS Custom 或 Emmet,它们也不会把 HTML 中的 class 属性值纳入 @ 符号索引范围。
输 @card 几乎永远返回空——这不是插件没装好,是设计如此。CSS 类名在 Sublime 里没有“定义-引用”链路,@ 模式根本不处理它。
- 唯一例外:某些 SCSS/Sass 项目中,如果用了
@mixin card,那@card才可能命中 mixin 定义 - 想确认当前光标是否落在类名上?装
Scope Hunter插件,按Ctrl+Shift+Alt+P看作用域,只有显示entity.name.tag.class.css才算被识别 - 别指望
Ctrl+P替代正则搜索——它快,但能力边界清晰
替换 class 名时,Where 字段比正则还关键
用 Ctrl+Shift+F 批量替换 card → panel,最容易翻车的地方不是正则写错,而是 Where 填成了 . 或留空,结果把 node_modules 里的第三方组件也一并替了。
安全做法:Where 显式限定业务目录,例如:./src/**/*.html, ./src/**/*.vue, ./src/**/*.css,并排除干扰:., -node_modules/, -dist/。
- 斜杠统一用
/,Windows 下也别写\,Sublime 不认 - 逗号分隔多个 glob 模式,
**表示递归子目录,*只匹配一级 - 替换完务必手动执行
File → Save All,否则关掉 Sublime 就丢所有更改 - 改前建议
git stash,改完git diff确认范围,再决定是否恢复
类名搜索的复杂点不在正则多难写,而在你得先分清:这是在找定义(Ctrl+R)、找使用(Ctrl+Shift+F + 正则)、还是找引用(Ctrl+P + @ 不行)。很多人卡住,是因为默认所有搜索入口都该支持类名——其实只有两个真管用,且各自有死区。










