ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ripgrep 十分钟跑通:3 个高频搜索场景,外加一套“搜不到“的排查顺序

ripgrep 十分钟跑通:3 个高频搜索场景,外加一套“搜不到“的排查顺序 ripgrep 十分钟跑通:3 个高频搜索场景,外加一套搜不到的排查顺序【免费下载链接】ripgrepripgrep recursively searches directories for a regex pattern while respecting your gitignore项目地址: https://gitcode.com/GitHub_Trending/ri/ripgrepripgrep(命令行里叫rg)是一个按正则递归搜索目录的命令行工具:它默认跳过 .gitignore 里列出的文件、隐藏文件和二进制文件,不用像 grep 那样自己拼排除参数。本文带你走完一条动线:怎么装 → 3 个搜索场景怎么写 → 顺手起来的组合技巧 → 搜不到怎么排查 → 参数速查。安装 rg 的三种方式,以及怎么确认装上了按你的需求挑一条,最后都能拿到能用的rg:方式命令适合谁代价包管理器macOS 用brew install ripgrep;Ubuntu/Debian 用sudo apt-get install ripgrep;Arch 用sudo pacman -S ripgrep;Fedora 用sudo dnf install ripgrep;Windows 用choco install ripgrep或scoop install ripgrep大多数人,依赖自动处理、随时可升级版本可能比官方发布略旧官方预编译二进制从官方发布页下载对应系统压缩包,解包后把rg放进PATH目录想要最新版、或包管理器里没有要手动摆放,不自动更新源码构建Rust 工具链 cargo build --release想尝新特性、或开启 PCRE2 后向引用等高级语法要编译,PCRE2 需链接系统库源码构建就先git clone https://gitcode.com/GitHub_Trending/ri/ripgrep再编译。PCRE2 在 Cargo.toml 里被声明为可选的pcre2feature,编译时加--features pcre2就会链接进去。装好之后跑这条命令确认一下:rg --version✅ 看到版本号(当前为 15.x)就算成功,输出里还会列出 SIMD、PCRE2 等编译特性的开关状态。最常用的 3 个搜索场景怎么写全盘找一个字符串——rg TODO递归搜当前目录,自动避开被 git 忽略的文件。为什么这么写:rg 的默认行为已经把忽略规则、隐藏文件、二进制都过滤掉了,结果天然干净,不用堆参数。只搜某种文件类型——rg -t rust fn main限定在 Rust 文件里找。为什么:-t用的是内置的类型定义,比手写 glob 更准也更快;不确定有哪些类型时,先rg --type-list看一遍。精确找词,避免误伤——rg -i -w TODO,-i忽略大小写,-w要求整词匹配。为什么:整词匹配能让TODO不再命中TODOList这类同前缀的词。收尾一句话:三个场景覆盖的正是日常最高频的三种需求——全盘找、按类型找、精确找。从能用到顺手:3 个组合技巧先看范围再搜:rg --files不搜内容,只列出会被扫描的文件。大仓库里先跑一遍确认它到底会扫到什么,再决定要不要收窄。行号 上下文:-n显示行号,方便回编辑器跳转;-A 3/-B 2分别显示匹配行后 3 行、前 2 行,省事就用-C 2前后各 2 行。glob 深度双重收窄:-g *.rs限定文件范围,--max-depth 3限制递归深度。两个叠起来,搜索范围立刻可控。 实用习惯:先rg --files看范围,再带-C 2精确搜,比盲目全盘搜更快,也不会被噪音刷屏。搜不到结果时,按这个顺序排查现象:某串字符明明在仓库里,rg却什么都没输出。多数情况不是 bug,而是默认过滤在生效。按这个顺序查:先怀疑:在隐藏文件/目录里吗?rg 默认跳过.git这类隐藏目录,--hidden把它们包含进来。再怀疑:在二进制文件里吗?二进制默认被跳过,-u每加一个就放开一层过滤,第一个-u就是包含二进制文件。接着:.gitignore 把它忽略了么?只想放开忽略规则、保留二进制跳过的话,用--no-ignore,范围比全放开更窄。兜底:-uuu一次性关掉隐藏、二进制、忽略三类过滤。⚠️ 过滤全部放开后,大仓库里会明显变慢,确认原因后尽早收窄条件。至于 rg 为什么默认跳过二进制,见 FAQ.md 里的解释。参数速查:常用选项一览选项作用-i忽略大小写-w整词匹配-n显示行号-H显示文件名-A/-B/-C显示匹配行后 / 前 / 前后 N 行上下文-t/-T限定 / 排除文件类型-gglob 通配过滤--hidden包含隐藏文件和目录--no-ignore只关闭 gitignore 规则-uuu关闭全部过滤(隐藏、二进制、忽略)--type-list列出全部可用文件类型--max-depth限制递归深度想再深入,有两个方向:把-t和-g组合出自己的搜索预设并写进配置文件;以及弄清 rg 的默认过滤行为,这样遇到结果异常能推理出原因,而不是靠猜。rg --help帮助文本的源码在 crates/core/flags/doc/help.rs,对着帮助输出读一遍会更清楚每个选项的边界。延伸阅读:完整用户指南: GUIDE.md常见问题(为什么跳过二进制、怎么搜非 UTF-8 文件等): FAQ.md项目说明与工具对比基准测试: README.md【免费下载链接】ripgrepripgrep recursively searches directories for a regex pattern while respecting your gitignore项目地址: https://gitcode.com/GitHub_Trending/ri/ripgrep创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表