GitHub CLI(gh)に曖昧検索の力を加えるghfコマンドを作ってzshプラグイン化した

カテゴリ: shell git

端末上でレポジトリやissueを曖昧検索して内容をプレビューし、確定したらブラウザで開くなどの操作ができるghfコマンドを作りました。

詳しい利用方法やインストール方法は→https://github.com/atusy/gh-fzf。 zshプラグイン化しているのでzinitなどのユーザーは導入しやすいと思います。

下図のようにghf repoとかghf issueとかすると検索が始まってブラウザを開けます。

ghf repo --publicの実行結果。

GitHub CLIのghコマンドはターミナルからレポジトリやissue、PRを操作できる便利なプログラムです。ただ、あのissueのページ開きたいけどなんだったっけ……となると、

  • gh issue listでissue一覧を確認。目的のissueの番号を記録
  • gh issue viewにissue番号を与えて内容を見る
  • 必要ならgh issue view --webでブラウザを開く、closereopenなどの操作を追加する

といった処理が必要です。しかもissue listではissueのタイトルくらいしか見れないし、検索も面倒……。

そこでfzfを組み合わせると曖昧検索したり、内容をpreviewしたり、色々できるようになります。で、できたのが先のデモ動画です。

デフォルトではgh repogh issueなどとするとサブコマンドのヘルプが表示されますが、 listを曖昧検索してブラウザで開くようにパワーアップさせました。元のヘルプを見たい場合もgh repo --helpすればいいので、不都合はないと思います。

また、ブラウザで開く以外にも、検索したレポジトリをクローンしたいとか、PRをマージしたいといった場合もあるかと思います。そんな場合用に、gh repo fzfといった形で、fzfサブサブコマンドを追加しました。 listサブサブコマンドと同じ引数を受け付けるので、以下のようにrstudioのレポジトリを検索してクローン、みたいな使い方ができます。

# rstudioのレポジトリを検索してクローン
ghf repo fzf rstudio | ghf repo clone

また、ghfコマンドの動作はghコマンドと整合的なので、以下のようにエイリアスを貼ってしまっても便利だと思います。

alias gh=ghf

最後に、今回の開発ははすさんの記事に影響を受けています。

生産性向上間違いなし!!fzfを使ったコマンド効率化tips
https://zenn.dev/hasu_83/articles/4eacd5f0f701fcf16087

また、vim-jpのslackではMillyさんに叩き台のソースコードに対して色々と御助言頂きました。この場をお借りして皆さんに感謝申し上げます。