はじめに

この資料は Rust 製のコマンドラインツール hgrep について紹介するものです。

Rustの環境構築やツールのインストール方法については以下を参照してください

Rust開発環境を整える

hgrep について

hgrep は ripgrepでファイルを検索して、batで結果を表示したときのように、検索結果をハイライト表示します。grepコマンドの-Cオプションと同じように。hgrepは、マッチする行が近ければ、1つのコードスニペットに含まれる行を表示します。grep -Cとは異なり、hgrepは空白行に関するいくつかのヒューリスティックを採用して、効率的なコンテキスト行の数を決定します。コマンド名は、Human-friendly GREP に由来しています。

GitHub - rhysd/hgrep: Grep with human-friendly search results

デモ

https://github.com/rhysd/ss/raw/master/hgrep/main.png

インストール

hgrep のインストールは次のように行います。

% cargo install hgrep

ソースコードからビルド

cargoはhgrepコマンドをソースからビルドするため、フィーチャーズフラグによって特定の機能を選んだり、他の機能を無効にしたりすことができます。例えば、grepの出力を標準入力から読み込んでhgrepを使用し、batプリンタは使用しない場合、syntect-printer を有効にするだけで依存関係の数、インストール時間、バイナリサイズを劇的に削減することができます。

% cargo install hgrep --no-default-features --features syntect-printer

フィーチャーズフラグ

すべてのフィーチャーズはオプションで、デフォルトで有効になっています。少なくともbat-printerまたはsyntect-printer のいずれかが有効である必要があります。

フィーチャーズ 説明
ripgrep ripgrepライブラリを組み込みんだgrepの実装です。
場合によっては、パイプによるrgよりもパフォーマンスが向上します。
syntect-printer syntectライブラリで構築された独自のプリンタ実装です。
パフォーマンスと出力レイアウトは、私たちのユースケースに最適化されています。
bat-printer batのpretty printerの上に構築されたプリンター実装ですです。

使用方法

hgrep [FLAGS] [OPTIONS] [PATTERN [PATH...]]