🕌

生産性向上間違いなし!!fzfを使ったコマンド効率化tips

1 min read 2

みなさん。突然ですがfzf使ってますか? 私は今まできちんと使ったことはありませんでした。
使ってみるとものすごく効率が上がったので、どう使っているのかを書いていきます。

当記事では、fzfのインストール方法などは解説しません

いつ使うのか

  • docker
  • github cli

dockerでの使用例

#docker runでのイメージ名補完
function comp-docker-image(){
  docker run `docker images --format "{{.Repository}}:{{.Tag}}" | fzf`
}


#docker execでのコンテナ名補完
function exec-docker-container(){
  local CMD
  read -p "command (press enter key to skip): " CMD
  docker exec -it  `docker ps --format "{{.Names}}" | fzf` ${CMD:-bash}
}

ソースコードはこちら

dockerの使用例では基本的にイメージやコンテナ名の補完に使っています。個人的にイメージ名とか何度も確認するのは非効率だと思っていたのですが、fzfのおかげで効率が爆上がりしました。

コンテナ名の補完関数には、コンテナ起動時に実行するコマンドを入力するダイアログを作りました。こうすることで、もし起動時に実行したいコマンドがある場合にはfzfでコンテナ選択ができる+コマンド実行のオプションを手打ちしなくて済むので、これまた個人的に効率化できたポイントだと思っています。

github cliでの使用例

function ghclone(){
  gh repo clone $(gh repo list $1 --json nameWithOwner -q '.[].nameWithOwner' | fzf)
}

github cliでは、ユーザーのリポジトリ一覧をfzfで取得しています。

ghclone {user_name}とすることで、ユーザーを指定できます。

user_nameを入力しない場合は、自身のリポジトリを取得します

こうすることで個人的にボトルネックだったリポジトリ名の入力をしなくてよくなるので、効率化できたかなと思います

リポジトリをwebブラウザで表示する
function ghclone(){
  gh repo view --web $(gh repo list $1 --json nameWithOwner -q '.[].nameWithOwner' | fzf)
}

まとめ

fzfを使うことで結構高頻度で起こる入力などを効率化できることがわかったので、これからもfzfを使ったコマンドを作ったら追記していこうと思います。

変更履歴

2021-07-01 コードの修正と、atusyさんのコメント反映
2021-07-15 リポジトリwebブラウザ表示関数の追加

Discussion

gh repo list atusyなどとしてユーザーを指定できるので、以下のように関数化すれば、
任意のユーザーに拡張できますね。未指定の場合は自身になります。

function ghclone(){
  gh repo clone $(gh repo list $1 --json nameWithOwner -q '.[].nameWithOwner' | fzf)
}

ありがとうございます!!反映させていただきました

ログインするとコメントできます