mcpField
F
find-replace

find-replace

github.com/0xdarkmatter開発7877 回インストール2 週間前に更新
リポジトリ

find-replace について

find-replaceは、sdでファイル内のテキストを検索・置換するコマンドラインスキルです。コードやテキストの編集向けに、変更の事前確認や部分一致を避ける方法も案内します。

主な機能

  1. 01sdによるグローバル置換
  2. 02複数ファイルの一括置換
  3. 03事前確認と安全な一括処理
  4. 04正規表現の単語境界指定
  5. 05特殊文字のエスケープ

活用シーン

  1. 01ソースファイル間で変数や関数を改名
  2. 02プロジェクトのインポートパスを更新
  3. 03置換を適用する前に結果を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/0xdarkmatter/claude-mods --skill find-replace

インストール後、Claude Code で/find-replaceを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
.gitkeep
references/
advanced-patterns.md
scripts/
.gitkeep

詳細

検索と置換

sd を使った最新の検索と置換です。

sd の基本

# Replace in file (in-place)
sd 'oldText' 'newText' file.txt

# Replace in multiple files
sd 'oldText' 'newText' *.js

# Preview without changing (pipe)
cat file.txt | sd 'old' 'new'

sd と sed の比較

sedsd
sed 's/old/new/g'sd 'old' 'new'
sed -i 's/old/new/g'sd 'old' 'new' file
sed 's#path/to#new/path#g'sd 'path/to' 'new/path'

主な違い: sd はデフォルトで全件を対象とし、区切り文字に関する問題もありません。

よく使うパターン

# Variable/function rename
sd 'oldName' 'newName' src/**/*.ts

# Word boundaries (avoid partial matches)
sd '\boldName\b' 'newName' src/**/*.ts

# Import path update
sd "from '../utils'" "from '@/utils'" src/**/*.ts

# Capture groups
sd 'console\.log\((.*)\)' 'logger.info($1)' src/**/*.js

安全な一括処理のワークフロー

# 1. List affected files
rg -l 'oldPattern' src/

# 2. Preview replacements
rg 'oldPattern' -r 'newPattern' src/

# 3. Apply
sd 'oldPattern' 'newPattern' $(rg -l 'oldPattern' src/)

# 4. Verify
rg 'oldPattern' src/  # Should return nothing
git diff              # Review changes

特殊文字

文字エスケープ
.\.
*\*
[ ]\[ \]
$\$
\\\

ヒント

ヒント理由
まず rg -r で必ずプレビューするミスを防げます
一括変更の前に git を使う簡単にロールバックできます
単語境界には \b を使う部分一致を防げます
パターンを引用符で囲むシェルによる解釈を防げます

参考資料

詳細なパターンについては、次を読み込んでください:

  • ./references/advanced-patterns.md - 正規表現、一括処理のワークフロー、実例

コメント