---
# System prepended metadata

title: ripgrep：現代化搜尋利器(rg)
tags: [Tool, Linux, macOS]

---

---
title: ripgrep：現代化搜尋利器(rg) 
tags: [Tool, CLI, Linux, MacOS, Search, Rust]
---
# ripgrep：現代化搜尋利器(rg)

[文章更新時間: 2026-01-23 13:34]

![ripgrep](https://hackmd.io/_uploads/SkNnphV8bl.jpg)

## 📖 簡介

**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'
```