はじめに

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

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

Rust開発環境を整える

skim について

skim は、ファイル、行、コマンドなどのナビゲーションに費やされる時間を短縮するためのファジーファインダーです。コマンド名は sk となります。

GitHub - lotabout/skim: Fuzzy Finder in rust!

# works with grep
% sk --ansi -i -c 'grep -rI --color=always --line-number "{}" .'

# works with rg
% sk --ansi -i -c 'rg --color=always --line-number "{}"'

# カレントディレクトリ以下にあるRustソースの一覧から選択してエディタで開く
% vim $(find . -name "*.rs" | sk -m)

使用方法

skim は一般的なフィルタ(grep のような)として、あるいはコマンドを呼び出すための対話型インターフェイスとして使用することができます。

フィルタとして実行

以下を試してみて下さい

# directly invoke skim
sk

# or pipe some input to it: (press TAB key select multiple items with -m enabled)
vim $(find . -name "*.rs" | sk -m)

上記のコマンドを実行すると、拡張子が .rs のファイルを選択し、選択したファイルを vim で開くことができるようになります。

インタラクティブなインターフェイスとして実行

skim は他のコマンドを動的に呼び出すことができます。通常は grep, ack, ag, rg などと組み合わせて、プロジェクトディレクトリの内容 を検索することになるでしょう。

# works with grep
sk --ansi -i -c 'grep -rI --color=always --line-number "{}" .'
# works with ack
sk --ansi -i -c 'ack --color "{}"'
# works with ag
sk --ansi -i -c 'ag --color "{}"'
# works with rg
sk --ansi -i -c 'rg --color=always --line-number "{}"'

キーバインディング

よく使われるキーバインドをいくつか紹介します。