欢迎回来
登录你的知识库账户
忘记密码?
还没有账户?立即注册
创建账户
注册你的专属知识库
已有账户?去登录
找回密码
输入注册邮箱获取验证码
返回登录
请输入图片中的验证码以继续注册
加载中...
取消
新建收藏
手动添加你喜欢的内容
取消
编辑头像与昵称
上传新头像或修改你的显示昵称
支持 JPG/PNG,最大 2MB
取消

问题反馈

notebasewww.notebase.cn
控制台
内容库
动态
管理
账户
U
用户
--
在线
v0.8.7 · 知识库
笔记
KnowledgeBase
网络无边,知识有迹。
0笔记
0工具
30推荐

分类导航

按主题直达

编辑精选

站内用户贡献 · 真实笔记

最新收录

每日更新
继续浏览全部内容 →
>
笔记
0
加载中...
工具
0
此页用于记录用户反馈问题后的每一次改进
笔记用法

“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。

md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。

要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。

工具用法

在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。

要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。

工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。

隐藏笔记

写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。

适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。

数据安全

你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。

技术

全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。

理念

这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。

原则

不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。

更多

产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。

举报

如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。

趋势
// 点击导航加载发现
归档
// 归档为空
最近浏览
// 暂无浏览记录
发布
// 加载中...
用户发布
// 加载中...
用户管理
// 加载中...
访问统计
// 加载中...
内容审核
// 加载中...
个人信息
// 加载中...
返回首页

ripgrep

ripgrep — 一个基于正则的极速代码搜索工具,能瞬间从海量文件里捞到你想要的内容。

如果你还在用 grep 一点一点翻代码,或者用 IDE 自带的搜索等它转圈圈,那今天我要跟你聊的 ripgrep(简称 rg)可能会让你有点相见恨晚的感觉。

先说个场景:你接手了一个祖传项目,几十万行代码,目录嵌套得像俄罗斯套娃。你想找某个函数 fetchUserData 到底在哪个文件里定义过。用系统自带的 grep?慢,而且还会把 node_modules 里的东西也搜出来,结果刷屏。用 IDE 的全局搜索?等它索引完,咖啡都凉了。这时候 ripgrep 就上场了——它快得像开挂,而且默认就帮你把 .gitignore 里的目录、二进制文件、隐藏文件夹全过滤掉,只给你看真正有用的结果。

这玩意儿到底是干嘛的

ripgrep 就是用 Rust 写的一个命令行搜索工具。它的核心使命就一个:让你在代码库里搜东西又快又准。它比 grep 快一个数量级,比 ack、ag 也快不少,而且默认行为非常“懂程序员”——比如自动忽略 .gitignore 里的文件、只搜索 UTF-8 文本、支持递归搜索、输出带颜色和行号。你不需要配一堆参数才能用得舒服,开箱即用。

它解决的最大痛点就是“慢”和“脏”。慢是指传统 grep 在大项目里索引慢、搜索慢;脏是指搜出来的结果里夹杂着各种你不想看的文件(二进制、依赖包、生成文件)。ripgrep 把这些全给你挡掉了。

下载方式

去官网看一眼,支持所有主流平台:

官网

或者直接去 GitHub Releases 页面下载预编译的二进制包,解压就能用,不需要装什么运行时环境。

安装方法

根据你的操作系统,选一种最顺手的方式:

macOS
用 Homebrew 一行搞定:

brew install ripgrep

Linux
Ubuntu/Debian 用户:

sudo apt install ripgrep

不过要注意,某些老版本 Ubuntu 仓库里的 rg 可能版本较旧,建议用官网的二进制包或者添加 PPA。

Fedora/CentOS/RHEL:

sudo dnf install ripgrep

Arch Linux:

sudo pacman -S ripgrep

Windows
用 scoop 或 chocolatey 都行:

scoop install ripgrep
# 或者
choco install ripgrep

也可以直接去 GitHub Releases 下载 .zip 包,解压后把 rg.exe 扔到 PATH 路径里。

从源码编译(如果你喜欢折腾):

git clone https://github.com/BurntSushi/ripgrep
cd ripgrep
cargo build --release

前提是你装了 Rust 工具链。

基础使用教程

装好之后,打开终端,输入 rg --help 看看是不是能跑起来。接下来我带你过几个最常用的操作。

1. 最简单的搜索

rg "function"

这会在当前目录下所有文本文件里递归搜索包含 "function" 的行,并高亮显示匹配部分,同时输出文件名和行号。默认会自动跳过 .gitignore 里的目录和隐藏文件。

2. 指定搜索目录

rg "TODO" src/

只搜 src 目录。

3. 搜索特定文件类型

rg "class" --type rust

只搜索 Rust 文件(.rs)。想知道 rg 支持哪些类型?运行 rg --type-list 看完整列表,包括 py、js、go、c、cpp、html、css 等等。

4. 反转匹配(显示不包含关键字的行)

rg -v "debug"

找出所有不含 "debug" 的行,适合用来检查有没有漏掉某些配置。

5. 只输出匹配的文件名

rg -l "import React"

只列出包含 "import React" 的文件名,不显示具体行内容。这在重构时想找出所有受影响的文件时非常有用。

6. 输出匹配的数量

rg -c "error"

每个文件匹配了多少行,一目了然。

7. 忽略大小写

rg -i "User"

会搜到 User、user、USER 等等。

8. 显示匹配行的上下文

rg -C 3 "function"

在匹配行的前后各显示 3 行,方便你看上下文。-B 只显示前几行(Before),-A 只显示后几行(After)。

9. 使用正则表达式

rg "fn [a-z_]+\(.*\)"

搜索所有 Rust 函数定义。rg 默认使用 Rust 风格的正则,功能很强大,支持 lookahead、反向引用等。

进阶技巧

用熟了基础操作之后,可以试试这些骚操作,能让你效率再翻一倍。

1. 结合 fzf 实现交互式搜索
把 rg 和 fzf 组合起来,你可以边打字边筛选结果,选中后直接跳到文件:

rg --line-number "TODO" | fzf --preview 'bat --color=always {1}' --bind 'enter:become(vim {1} +{2})'

这里用了 bat 来预览文件内容(bat 是 cat 的增强版,带语法高亮),按回车会直接用 vim 打开文件并定位到行号。如果你用 neovim 或 code,把 vim 换成对应的命令就行。

2. 只搜新改动的文件(和 git 联动)
有时候你只想在最近修改的文件里搜东西,可以结合 git 的 diff 文件列表:

rg "fixme" $(git diff --name-only HEAD~1)

或者用 rg 自己的 --path 参数配合 git 输出:

git diff --name-only HEAD~1 | xargs rg "fixme"

3. 排除特定目录(即使不在 .gitignore 里)
有些临时目录比如 dist/、build/ 你可能不想搜,但又不希望加到 .gitignore 里:

rg "API_KEY" --glob '!dist/**' --glob '!build/**'

--glob 支持 ! 取反,非常灵活。

4. 多行匹配
默认 rg 是按行搜索的,但如果你要匹配跨多行的内容(比如多行注释或函数体),用 -U 或 --multiline 开启多行模式:

rg -U "/\*.*?\*/" --multiline-dotall

注意多行模式会吃掉更多内存,别在大文件上乱跑。

5. 把 rg 当成快速统计工具
想知道项目里有多少行 Rust 代码?

rg --type rust --count-matches '' | awk -F: '{sum+=$2} END {print sum}'

或者更简单,用 wc -l 配合 rg 过滤:

rg --type rust -c '' | awk -F: '{sum+=$2} END {print sum}'

当然,更专业的统计可以用 cloc,但 rg 顺手就能干。

6. 自定义输出格式
如果你想把结果导入别的工具(比如 Excel 或脚本),可以用 --json 输出 JSON 格式:

rg "error" --json

每行一个 JSON 对象,包含文件路径、行号、列号、匹配内容等。配合 jq 解析非常强大。

7. 用 rg 替换文本(搭配 sed 或 perl)
rg 本身不能替换文本,但你可以结合 xargs 和 sed:

rg -l "old_text" | xargs sed -i 's/old_text/new_text/g'

注意 -i 是直接修改文件,建议先用不带 -i 的 sed 跑一遍看看效果。更安全的做法是用 gsed(macOS 上 GNU sed)或者用 perl -i -pe。

8. 搜索时不忽略任何文件
如果你非要搜二进制文件或者隐藏文件(比如 .env),加 -u 参数,可以叠三次:

rg -uuu "password"

一个 -u 会忽略 .gitignore,两个 -uu 还会搜隐藏文件,三个 -uuu 连二进制文件也搜。一般用到两个就够了。

9. 在 vim/neovim 里集成 rg
如果你用 vim,可以在 .vimrc 里设置:

set grepprg=rg\ --vimgrep\ --no-heading
set grepformat=%f:%l:%c:%m

这样 :grep 命令就会用 rg 来搜,而且结果可以快速跳转。neovim 用户甚至可以用 :Rg 命令(如果装了 nvim-telescope 或 fzf.vim 插件)。

最后说两句

ripgrep 是我日常使用频率最高的命令行工具之一,几乎每天都会用它。它不像某些工具那样需要你记住一堆晦涩的参数才能发挥威力,而是把最常见的需求(快、干净、彩色输出)做成了默认行为。如果你之前还在用 grep -r 或者 ack,我建议你花 5 分钟装上 rg,然后搜一下你项目里有多少个 TODO——我打赌你会觉得以前的自己太能忍了。

对了,如果你用 macOS 并且装了 brew,别忘了把 rg 加到你的 shell 别名里,比如:

alias search='rg --smart-case --type-add "web:*.{html,css,js}"'

这样以后搜前端代码就更顺手了。

工具这东西,用惯了就是肌肉记忆。希望这篇东西能帮你省下一些翻代码的时间,早点下班。

编写使用方法
Markdown 格式 · Ctrl+Enter 确定
新建笔记
预览
数据表格
点击单元格编辑 · Tab 移动
A1fx
Sheet1
BIH1H2≡🔗</>
隐私提醒

取消
编辑工具
取消