必须用"**/node_modules": true配置search.exclude才能排除全局搜索中的node_modules,files.exclude仅影响侧边栏显示;临时排除需在搜索面板“files to exclude”中设置,会覆盖search.exclude。

Ctrl+Shift+F 是全局搜索的起点,不是终点
直接按 Ctrl+Shift+F(macOS 用 Cmd+Shift+F)打开搜索面板后,别急着输关键词。代码规范检查场景下,你真正要找的往往不是“某个词”,而是“不符合约定的写法”——比如硬编码的字符串、未加 eslint-disable 注释却绕过规则的代码块、或被误删的 /* eslint-env */ 声明。这时候,搜索本身必须带约束条件,否则结果泛滥且无效。
用 search.exclude 过滤干扰项,否则搜索会漏掉关键文件
默认情况下,VSCode 会读取 search.exclude 配置来跳过某些路径。如果项目里有自定义的 ESLint 配置文件(如 .eslintrc.cjs、eslint.config.js)或 TypeScript 的 tsconfig.json,而它们又被 search.exclude 里的 "**/.*" 或 "**/node_modules/**" 规则意外覆盖,就搜不到这些配置本身——导致你无法确认某条规则是否启用,也无法验证修复逻辑是否匹配当前配置。
- 检查工作区
.vscode/settings.json和用户级settings.json中的search.exclude,确保不包含"**/.eslintrc*"、"**/eslint.config.*"、"**/tsconfig.*" - 若需临时排除大目录但保留配置文件,改用更精确的模式:
"**/node_modules/**"可以,但不要写成"**/node_modules*"(后者会误杀node_modules_config.js) -
search.exclude优先级高于files.exclude,只影响Ctrl+Shift+F,不影响Ctrl+P打开文件
正则 + 全字匹配(Aa 和 ab 按钮)才能准确定位违规模式
查规范问题不能只靠模糊字符串匹配。例如想找出所有没加 as const 的字面量断言,搜 as const 本身没用——你要找的是“用了 as 但后面不是 const”的行。这时必须启用正则(.* 按钮)并组合使用:
- 关闭
Aa(不区分大小写),避免漏掉AS CONST这类非标准写法 - 开启
ab(全字匹配)防止class被误认为含as - 正则示例:搜索
as\s+(?!const\b)可定位所有as后跟空格但不接const的情况(需确保启用了.*) - 注意:VSCode 正则引擎不支持
\K或可变长度负向先行断言,复杂逻辑建议导出到终端用rg或ag
搜索结果跳转后,别直接改——先看上下文和 ESLint 报错位置
点击搜索结果跳转到某行,不代表那里就是规范问题的根源。ESLint 常把报错位置标在错误语句的起始列,但实际原因可能是上一行少了个逗号、或缩进不对触发了 indent 规则。这时候容易犯两个错:
- 只改搜索命中行,没检查其所在代码块结构(比如一个
if块里混用了单引号和双引号,搜'会命中很多,但真正要统一的是整个块的引号风格) - 在未保存文件时批量替换(
Alt+R→ “全部替换”),结果 ESLint 报出新错误,因为替换破坏了类型推导或 JSX 属性顺序 - 更稳妥的做法:对每个搜索结果,先按
Ctrl+Shift+P输入ESLint: Show Output查看该文件实时诊断,再决定是否修改
真正卡住人的,从来不是找不到代码,而是找到之后不确定该不该动、怎么动才不引入新问题。搜索只是放大镜,规范落地还得靠上下文判断。











