---
title: ripgrep:現代化搜尋利器(rg)
tags: [Tool, CLI, Linux, MacOS, Search, Rust]
---
# ripgrep:現代化搜尋利器(rg)
[文章更新時間: 2026-01-23 13:34]

## 📖 簡介
**ripgrep** 是一款由 Rust 編寫的命令行搜尋工具。它的功能與經典的 `grep` 類似,但在速度、預設行為和易用性上有了質的飛躍。它能遞迴地在目錄中搜尋正規表示式(Regular Expression)匹配的內容,並聰明地跳過你不想搜尋的檔案。
---
## 🌟 為什麼選擇 ripgrep?(優點)
* **極致的速度**:在多數基準測試中,ripgrep 是目前最快的搜尋工具,超越了 `grep`、`ack` 與 `ag` (The Silver Searcher)。
* **聰明的預設行為**:
* 自動尊重你的 `.gitignore` 檔案。
* 自動跳過隱藏檔案與資料夾(如 `.git`)。
* 自動跳過二進位檔案。
* **強大的 Unicode 支援**:基於 Rust 的正規表示式引擎,原生支援 Unicode。
* **彩色輸出**:預設提供易於閱讀的彩色標記,區分檔名、行號與匹配內容。
* **跨平台**:在 macOS、Linux 與 Windows 上都能完美運行。
---
## 🛠️ 安裝步驟
你可以根據你的作業系統選擇對應的安裝方式:
### macOS
使用 Homebrew 安裝是最簡單的方式:
```bash
brew install ripgrep
```
### Linux
* **Ubuntu/Debian**:
```bash
sudo apt install ripgrep
```
* **Arch Linux**:
```bash
sudo pacman -S ripgrep
```
* **Fedora**:
```bash
sudo dnf install ripgrep
```
### Rust 開發者
如果你有安裝 Rust 環境,也可以透過 Cargo 安裝:
```bash
cargo install ripgrep
```
---
## ⌨️ 基礎操作步驟
安裝完成後,指令名稱為 `rg`。
### 1. 基本搜尋
搜尋目前目錄下所有檔案中的關鍵字:
```bash
rg "search_term"
```
### 2. 指定目錄搜尋
```bash
rg "search_term" ./src
```
### 3. 常用參數組合
| 參數 | 說明 |
| --- | --- |
| `-i` | 忽略大小寫 (ignore case) |
| `-w` | 匹配整個單字 (word boundary) |
| `-v` | 反向匹配 (顯示不包含該字串的行) |
| `-e` | 正則(regex)匹配 |
| `-r` | 替換文字 |
| `-l` | 僅列出檔案名稱,不列出具體行內容 |
| `-n` | 顯示行號 (預設已開啟) |
| `-t` | 僅查詢指定檔案類型 |
| `-p` | 開啟顏色, 行數 |
| `-h` | 使用說明 |
---
## 💡 使用情境介紹
### 情境 A:在大規模專案中尋找 Function 定義
當你接手一個超大型專案,想知道 `handleUserLogin` 在哪裡被定義,直接輸入:
```bash
rg -w "handleUserLogin"
```
因為 `rg` 會自動過濾掉 `node_modules` 或 `.git` 目錄,搜尋會瞬間完成。
### 情境 B:搜尋特定的檔案類型
如果你只想在 Python 檔案中搜尋某個關鍵字:
```bash
rg "import pandas" -t py
```
### 情境 C:結合其他工具 (Pipeline)
你可以將搜尋結果傳遞給其他工具處理。例如,尋找所有包含 "TODO" 的檔案並統計數量:
```bash
rg "TODO" --count
```
---
## 🚀 進階用法
### 1. 顯示前後文 (Context)
這在 Debug 時非常有用,可以看到匹配行周圍的程式碼:
* `-A 3`: 顯示匹配行後 (After) 3 行。
* `-B 3`: 顯示匹配行前 (Before) 3 行。
* `-C 3`: 顯示前後 (Context) 各 3 行。
```bash
rg "error_handler" -C 3
```
### 2. 取代功能 (Replace)
雖然 `rg` 主要用於搜尋,但它支援 `--replace` 參數來預覽取代後的結果(通常配合管道使用):
```bash
rg "old_name" --replace(-r) "new_name"
```
### 3. 使用配置檔案
如果你不喜歡每次都輸入某些參數(例如你想包含隱藏檔案),你可以建立一個配置文件。
1. 在家目錄建立 `.ripgreprc`。
2. 在環境變數中加入 `export RIPGREP_CONFIG_PATH="$HOME/.ripgreprc"`。
3. 在檔案中寫入:
```text
--smart-case
--max-columns=150
```
### 4. 正則表達式
`rg` 支援 PCRE2(需加 `-P` 參數),這讓你處理複雜的搜尋模式:
```bash
rg -P "\d{3}-\d{3}-\d{4}" # 搜尋電話號碼格式
```
### 5. 超級模糊搜尋:ripgrep + fzf (模糊搜尋整合)
如果你覺得 rg 的輸出太長,可以結合 fzf 實現互動式搜尋,這會讓你一邊輸入關鍵字,一邊即時過濾搜尋結果。
用下面的方式設定 alias 後可以使用 `rgf` 啟動互動式查詢
Bash
```
# 在 .bashrc 或 .zshrc 加入此別名
alias rgf='rg --line-number --column --no-heading --color=always --smart-case . | fzf --ansi'
```