Serpl — ターミナルでVS Code風の検索と置換
このような状況を想像してみてください:大規模なプロジェクトで、何十ものファイルにまたがる変数の名前を変更する必要があるとします。各ファイルをエディタで開く?面倒なsedスクリプトを使う?そこに、优雅な解決策があります — serpl。
Serplとは?
Serplは、VS Codeの検索と置換の利便性をターミナルに直接もたらす、Rustで書かれたターミナルアプリケーションです。単なるgrep/sedユーティリティではなく、インタラクティブなプレビューと柔軟な設定を備えた本格的なTUI(テキストユーザーインターフェース)です。
なぜ試してみるべきか?
- 本格的なインターフェース — コンソール出力だけでなく、便利なパネルベースのナビゲーション
- 大規模プロジェクトに対応 — 高速検索のためにripgrepと統合
- AST検索 — 正確な構文木クエリのためのast-grepサポート
- 柔軟な設定 — JSON/TOML/YAMLをサポート
- 統合 — NeovimとHelixで動作
1分でインストール
Rustユーザーの場合:
cargo install serpl
または、パッケージマネージャーから:
- Homebrew:
brew install serpl - Arch Linux:
pacman -S serpl - NixOS:
nix profile install nixpkgs#serpl
主な機能
1. インタラクティブな検索とプレビュー
Serplは、マッチのハイライト表示とともにリアルタイムで検索結果を表示します。ターミナルから離れずにファイル間を移動し、コンテキストを表示できます。
2. スマートな置換
複数の置換モードをサポートしています:
- シンプルな置換
- 大文字小文字の保持
- ASTベース(ast-grep経由)
3. 柔軟な検索モード
- プレーンテキスト
- 大文字小文字を区別
- 単語全体
- 正規表現
- AST検索(プログラミング言語用)
4. ターミナルエディタとの完全な統合
Neovimにはすぐに使える設定があります:
return {
"akinsho/toggleterm.nvim",
cmd = { "ToggleTerm", "TermExec" },
-- ... конфигурация ...
}
Helixの場合は、次を追加するだけです:
[keys.normal.ret]
t = [":write-all", ":insert-output serpl >/dev/tty", ":redraw", ":reload-all"]
特に便利な場面
- コードリファクタリング — 変数/関数の一括名前変更
- マイグレーション — APIの変更、依存関係の更新
- リモートサーバーでの作業 — GUIがないが便利な検索が必要な場合
- クイックなコード探索 — 関数の使用箇所をすべて見つける
内部仕様
- 最高のパフォーマンスのためにRustで構築
- UIにratatui.rsを使用
- ripgrepとast-grepと統合
- 5つのフォーマットで設定をサポート(JSON、JSON5、YAML、TOML、INI)
Serplは単なるgrep/sedの代替ではなく、ターミナルで積極的に作業する開発者向けの本格的なツールです。次のような方におすすめ:
- CLIツールを愛する
- リモートサーバーで頻繁に作業する
- スピードと利便性を重視する
そのような方にとって、serplは確かにツールキットに追加する価値があります。このプロジェクトは積極的に開発されており(GitHubで700+スター)、コントリビューターを歓迎しています。
おまけとして — すべてのファイルを一括置換するには、組み合わせCtrl+oを試してみてください。時間の節約は保証します!
関連プロジェクト