フィルターコマンドと組み合わせると幸せになれるコマンド集 その1
fzy, fzf, peco などなど様々なフィルターコマンドがこの世にはあるけれど、結局それで何をすれば DX があがるのか・・・と言われたので、よく使うやつを羅列しました。とりあえずその1ということで。
GitHub - jhawthorn/fzy: A better fuzzy finder
GitHub - junegunn/fzf: A command-line fuzzy finder
GitHub - peco/peco: Simplistic interactive filtering tool
動かしてる環境は zsh 、フィルターは fzf です。適宜変えてください。*1
コマンド履歴を見る
$ alias hist="fzf < ~/.zsh_history"
ghq のディレクトリに移動する
$ alias cg='cd $(ghq root)/$(ghq list|fzf)'
git checkout <local> を簡単に
$ git config --global alias.co '!git checkout $(git branch | fzf)' $ git co
git checkout -b <branch_name> <remote> を簡単に
$ git config --global alias.cor '!f() { local -r ref=$(git branch -r | fzf); git checkout -b "${1:-${ref#*/}}" $ref; }; f' $ git cor $ git cor <any_branch_name>
git <command> <file>... を簡単に
$ git config --global alias.staged 'diff --name-only --staged' $ git config --global alias.modified 'diff --name-only' $ git config --global alias.untracked 'ls-files --others --exclude-standard' $ $ git config --global alias.add-m '!git add -- $(git modified | fzf -m)' $ git config --global alias.add-u '!git add -- $(git untracked | fzf -m)' $ git config --global alias.reset-s '!git reset -- $(git staged | fzf -m)'
特定の拡張子のファイルを探索したい
# ~/.zshrc find_xxx_seed() { local -r ext="$1" echo "alias find_${ext}='find . -name \"*.${ext}\"|fzf -m'" } eval $(find_xxx_seed "apk") eval $(find_xxx_seed "ipa") # find_apk, find_ipa が有効になる
現在のワーキングディレクトリ化にある特定のディレクトリにいきたい
$ alias dive='cd $(find . -type d | fzf)'
他の用途には enhancd を使っています。また上の alias で「あ、この下にないんだった」と思ってキャンセルがてらCtrl+Cを押すと cd
無引数扱いになって履歴に移れるので重宝してます。(enhancd を使ってる場合に限る)
$ alias dive='f() { local -r go_to="$(find . -type d | fzf)"; if [[ -n "$go_to" ]]; then cd "$go_to"; fi; }; f'
Ctrl-C をしたら何もしてほしくないときは多分こう。
*1:ファイル数が多すぎるとパフォーマンスに支障が出ます。