用途:在文件内容中搜索代码模式,例如查找函数定义、定位符号用法、检索 TODO/FIXME 注释或配置值。按文件名查找文件应改用 file-nav 技能。
前置条件:需安装 ripgrep。若未安装,可提示用户安装:Arch Linux 用 sudo pacman -S ripgrep;Ubuntu/Debian 用 sudo apt install ripgrep;macOS 用 brew install ripgrep;也可用 cargo install ripgrep。
主要能力与常用选项:默认输出匹配行,rg -l 只列匹配文件,rg -c 统计每文件匹配数,rg -o 只显示匹配文本;上下文用 -A/-B/-C 指定前后行数;按类型过滤用 -t(如 -t clojure、-t js、-t py、-t rust),-T test 排除测试文件;用 -g 做 glob 过滤或排除(如 -g "!.test.");可指定目录或文件限定范围;大小写用 -i/-s/-S;行号默认显示,-N 隐藏;多行匹配用 -U;-m N 限制每文件匹配数。
常见搜索模式:查找函数定义(如 Clojure 的 (defn\s+my-function、Python 的 def\s+my_function、Go 的 func\s+MyFunction、Rust 的 fn\s+my_function);查找类/类型定义;用 -w 做词边界匹配查找符号用法;查找 import/require 语句;查找 TODO/FIXME 注释;查找配置值。
搜索策略:先宽后窄,先用 rg -l 找文件再带上下文搜索;定义与用法可并行执行;用 -g 排除测试与 vendor、node_modules;可同时指定多个文件类型。
性能建议:使用 -t 类型过滤、先用 -l、限定目录、用 -m N、并行执行独立搜索、排除无关目录。
高级选项:--hidden 包含隐藏文件,--no-ignore 不遵守 .gitignore,-uuu 搜索所有文件,--json 输出便于解析,-p 配合 less -R 分页显示颜色。
限制:本技能仅用于文件内容搜索,不负责按文件名查找;具体效果取决于本地是否安装 rg 及项目文件结构,资料未提供其他平台或收费信息。