ripgrep(rg)の検索結果をCotEditorで開いてタグジャンプ


2026-06-05追記:「ripgrepの検索結果をCotEditorで開く補助スクリプト」を追記
2026-05-16修正:CotEditor、macOSのバージョンによるものか、いつの間にか動作しなくなっていたので、全面的に作り替えました。

指定した文字列を含むテキストファイルを、特定のフォルダ内から検索。テキストエディタで検索結果を開き、該当ファイルの該当行を一発で開けるようにしてみました。 テキスト検索ツールとしてはripgrep、テキストエディタはCotEditor(macOS用)を使っています。

事前準備

ripgrepのインストール

Homebrewをすでに使っているなら、ターミナルから

brew install ripgrep

と入力するだけ。

テキストエディタCotEditorのインストール

CotEditorは、Mac App Storeからインストールできる。

ターミナルからCotEditorを起動できるようにする

CotEditorには「cot」というコマンドラインツールが用意されている。ターミナルから

ln -s /Applications/CotEditor.app/Contents/SharedSupport/bin/cot /usr/local/bin/cot

と入力してシンボリックリンクを作成する。

CotEditor用のスクリプトをインストール

下記のスクリプトを、macOS搭載の「スクリプトエディタ」にコピペして、適当な名前を付けてスクリプト形式(.scpt)で、CotEditorのスクリプトフォルダ(“~/Library/Application Scripts/com.coteditor.CotEditor”)に保存。(※注:CotEditorから.applescript形式のまま実行すると、うまく動作しない。必ず.scpt形式として保存して使うこと)。

使い方

ターミナルからripgrepで検索を実行

ターミルから rg -n -e 検索したいパターン 検索対象フォルダのフルパス | cot と入力する。 フルパスを手入力するのは面倒くさいけど、Finderから対象フォルダをターミナルにドラッグ&ドロップすると簡単に入力できる。

検索結果がCotEditorで開かれる。

Ripgrep coteditor 1

CotEditor上からスクリプトを実行

開きたいファイル名のところにカーソルを移動し、スクリプトメニューから「rg_tagjump.scpt」を実行。
該当ファイルの該当行がCotEditorで開かれる。

ripgrepの検索結果をCotEditorで開く補助スクリプト

ターミナルから毎回コマンドを入力するのは面倒なので、次のようなシェルスクリプトを rgcot などの名前で保存しておくと便利。

#!/bin/sh
set -eu
usage() {
echo "Usage: ${0##*/} [-r] PATTERN [PATH]" >&2
echo " default: fixed string search" >&2
echo " -r : regular expression search" >&2
exit 2
}
regex=0
while getopts "rh" opt; do
case "$opt" in
r) regex=1 ;;
h) usage ;;
*) usage ;;
esac
done
shift $((OPTIND - 1))
[ "$#" -ge 1 ] || usage
pattern=$1
target=${2:-.}
abs_path=$(cd "$target" && pwd -P)
if [ "$regex" -eq 1 ]; then
rg --line-number --no-heading --color=never -e "$pattern" "$abs_path" | cot -n
else
rg --line-number --no-heading --color=never -F -e "$pattern" "$abs_path" | cot -n
fi

保存したら実行権限を付ける。

Terminal window
chmod +x rgcot

PATH の通った場所に置いておけば、次のように使える。

Terminal window
rgcot "検索語"
rgcot "検索語" ~/Documents
rgcot -r 'foo|bar'

デフォルトでは -F を付けた固定文字列検索にしている。普段の検索では、.*[ などを正規表現として解釈されるより、この方が事故が少ない。正規表現を使いたいときだけ -r を付ける。

検索語に空白や記号を含む場合はクォートしておく。通常検索ならダブルクォート、正規表現ならシングルクォートにしておくと扱いやすい。

Terminal window
rgcot "人工 光合成"
rgcot -r '第[0-9]+回'

コメント