その「リストから選んで次に渡す」というパイプラインの使い方は、fzfの真骨頂です。
エンジニアの日常業務(Git、プロセス管理、ファイル操作)で即戦力になる「fzfスニペット」をエイリアス(alias)として .zshrc に登録しておくと非常に便利です。
1. Docker 関連
コンテナ操作はIDをコピーするのが面倒なので、fzfとの相性が抜群です。
停止中のコンテナを削除(複数選択可)
docker rm $(docker ps -a | fzf -m --header-lines=1 | awk '{print $1}')
Dockerイメージを削除
docker rmi $(docker images | fzf -m --header-lines=1 | awk '{print $3}')
起動中のコンテナにシェルで入る
docker exec -it $(docker ps | fzf --header-lines=1 | awk '{print $1}') /bin/bash
2. Git 関連
ブランチ名やコミットハッシュを打ち込む手間をゼロにします。
ブランチを切り替える(Checkout)
git checkout $(git branch -a | fzf | tr -d '[:space:]' | sed 's#remotes/origin/##')
変更したファイルをステージングに追加(git add)
# Tabキーで複数選択して一気に add できます
git add $(git status -s | fzf -m | awk '{print $2}')
過去のコミットメッセージを検索してハッシュを取得
git log --oneline | fzf | awk '{print $1}'
3. プロセス・システム管理
「あのプロセス、重いから落としたい」という時に便利です。
特定のプロセスを狙い撃ちで Kill
# プロセス名で検索して、選択したものを kill -9
ps -ef | fzf -m --header-lines=1 | awk '{print $2}' | xargs kill -9
環境変数の中身を検索
printenv | fzf
4. ファイル・エディタ操作
ファイルを探して開く、という動作を爆速にします。
ファイルを探して VS Code (または $EDITOR) で開く
# 現在のディレクトリ以下からファイルを探して開く
code $(find . -maxdepth 5 -not -path '*/.*' | fzf)
SSH接続先を選択する
~/.ssh/config に書かれた Host 名をリストアップして接続します。
ssh $(grep -iE '^host [^*]' ~/.ssh/config | awk '{print $2}' | fzf)
5. Zsh 関数にしてさらに便利にする
これらを単なる1行コマンドではなく、ショートカットのように使うための .zshrc 用の関数例です。
過去に cd したディレクトリに爆速で戻る
# cdr (要: chpwd_functions) と組み合わせるのが最強です
function fzf-cdr() {
local target_dir=$(cdr -l | sed 's/^[0-9]\+ \+//' | fzf --query "$LBUFFER")
if [ -n "$target_dir" ]; then
BUFFER="cd ${target_dir}"
zle accept-line
fi
}
zle -N fzf-cdr
bindkey '^@' fzf-cdr # Ctrl + Space で履歴からディレクトリ選択
使いこなしのコツ
-m(multi): Tabキーで複数をマークできるようになります。--header-lines=1:docker psなどの1行目(見出し)を選択対象から外します。--preview '...': 以前紹介した通り、右側に中身を表示させるとさらに確実性が増します。


コメント