Open2
雑に書いた fzf functions
About
雑に書いたfzfの関数を気が向いたときに雑に挙げていきます.
動けば良いやで作ってるので,ご了承を & improvement 歓迎です
fzfとは
fzf is a general-purpose command-line fuzzy finder.
です.
日本語で言うと「あいまい検索」とか.
ググればたくさん良記事があるのでそちらを参考して頂きたいですが,ざっくり言うと
「たくさん有る候補の中から,それっぽい文字列を打ち込んで徐々にターゲットを絞っていく」やつです.
例で言えば,
「今いるdirectory配下のあのファイルをcatしたいけど,正確なpath覚えてない」って時に,
- directory配下のファイル名全部取得
- 覚えている範囲でファイル名入力していく
- 絞り込まれた候補から目的のファイルを選択する
みたいに使います.
正確なpathが分からなくても楽に絞り込んでいけるので便利
fuzzy cat
current directory配下のファイルを絞り込んでcat
fcat (){
local selected
if [ $# = 0 ];then
selected=$(fd --color=always -t f | fzf --preview "bat --color=always --style=header,grid --line-range :100 {}")
else
if [ -f $1 ]; then
selected=$1
else
selected=$(fd --color=always -t f | fzf --query "$1" --preview "bat --color=always --style=header,grid --line-range :100 {}")
fi
fi
if [ -n "$selected" ];then
print -s "bat $selected"
bat $selected
else
echo "No file is selected"
fi
}
find
の代わりに
cat
の代わりに
を使ってます.
後 コマンド履歴にちゃんと実行時のコマンドを残したいので
print -s "bat $selected"
してます.
挙動的には
- 引数あれば初期クエリとして引数を与えてる
- 引数がそのまま有効なファイルpathになっていればそのままそれを選択
- 選択中にpreviewとしてbatした内容を表示