端末上でレポジトリやissueを曖昧検索して内容をプレビューし、確定したらブラウザで開くなどの操作ができるghf
コマンドを作りました。
詳しい利用方法やインストール方法は→https://github.com/atusy/gh-fzf。 zshプラグイン化しているのでzinitなどのユーザーは導入しやすいと思います。
下図のようにghf repo
とかghf issue
とかすると検索が始まってブラウザを開けます。
GitHub CLIのgh
コマンドはターミナルからレポジトリやissue、PRを操作できる便利なプログラムです。ただ、あのissueのページ開きたいけどなんだったっけ……となると、
gh issue list
でissue一覧を確認。目的のissueの番号を記録gh issue view
にissue番号を与えて内容を見る- 必要なら
gh issue view --web
でブラウザを開く、close
、reopen
などの操作を追加する
といった処理が必要です。しかもissue listではissueのタイトルくらいしか見れないし、検索も面倒……。
そこでfzfを組み合わせると曖昧検索したり、内容をpreviewしたり、色々できるようになります。で、できたのが先のデモ動画です。
デフォルトではgh repo
、gh 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さんに叩き台のソースコードに対して色々と御助言頂きました。この場をお借りして皆さんに感謝申し上げます。