fzf と bat を インストールします
brew install fzf
brew install bat
以下のURLからbashまたはzsh用のファイルをダウンロードします。
https://github.com/junegunn/fzf/tree/master/shell
ホームフォルダの /fzf/ 以下に保存します
.bash_profile に 以下のように記述します ( bash の場合 )
# FZF
source ~/fzf/completion.bash
source ~/fzf/key-bindings.bash
Control + R
を押すと コマンドの履歴が表示され、fuzzyサーチして実行することができます。
# FZF (ssh)
function fssh {
t=$(cat ~/.ssh/config | grep 'Host ' | cut -f2 -d' ' | fzf --reverse --preview "cat ~/.ssh/config | sed -ne '/^Host {}$/,/^\s*$/p'")
if [ -n "$t" ]; then
echo "ssh $t"
ssh "$t"
fi
}
fssh
接続先一覧からエンター押すと接続できるようになります。
まず jq をインストールします
brew install jq
function fy() {
if [ ! -f "package.json" ]; then
echo "Error: package.json not found"
return 1
fi
if [ -f "yarn.lock" ]; then
local pm=yarn
else
local pm=yarn
fi
local script=$(cat package.json | jq -r '.scripts | to_entries | .[] | .key + " -> " + .value' | fzf --reverse)
if [ -n "$script" ]; then
SCRIPT=(${script/ -> / })
echo ${pm} run ${SCRIPT[0]}
history -s ${pm} run ${SCRIPT[0]}
${pm} run ${SCRIPT[0]}
fi
}
function fn() {
if [ ! -f "package.json" ]; then
echo "Error: package.json not found"
return 1
fi
if [ -f "yarn.lock" ]; then
local pm=npm
else
local pm=npm
fi
local script=$(cat package.json | jq -r '.scripts | to_entries | .[] | .key + " -> " + .value' | fzf --reverse)
if [ -n "$script" ]; then
SCRIPT=(${script/ -> / })
echo ${pm} run ${SCRIPT[0]}
history -s ${pm} run ${SCRIPT[0]}
${pm} run ${SCRIPT[0]}
fi
}
function fd(){
local SH="bash"
type docker >/dev/null 2>&1 || {
echo "docker not found" >&2
exit 1
}
type fzf >/dev/null 2>&1 || {
echo "fzf not found" >&2
exit 1
}
local HASH=$(docker ps | fzf --reverse --header-lines=1 --select-1 --query="${1:-}" | awk '{ print $1 }')
history -s docker exec -it "${HASH}" "${SH}"
docker exec -it "${HASH}" "${SH}"
}
brew install jq
( bash用です )
# package.json実行 (brew install jq)
function fp() {
if [ ! -f "package.json" ]; then
echo "Error: package.json not found"
return 1
fi
if [ -f "yarn.lock" ]; then
local pm=yarn
else
local pm=npm
fi
local script=$(cat package.json | jq -r '.scripts | to_entries | .[] | .key + " -> " + .value' | fzf)
if [ -n "$script" ]; then
SCRIPT=(${script/ -> / })
echo ${pm} run ${SCRIPT[0]}
history -s ${pm} run ${SCRIPT[0]}
npm run ${SCRIPT[0]}
fi
}
以下のURLから preview.sh をダウンロードする https://raw.githubusercontent.com/junegunn/fzf.vim/master/bin/preview.sh
~/fzf/ に保存し、 実行権限を付与しておきます
chmod 0755 preview.sh
.bash_profile に以下を追加する
# FZF (fd)
function fd {
file=$(find * | fzf --preview "preview.sh {} 2> /dev/null || ls {}")
echo $file
echo $file | pbcopy
}
仕事が遅い人は絶対に知らないワンライナー10選 - Qiita
https://blog.tsub.me/post/move-from-peco-to-fzf/
https://journal.lampetty.net/entry/terminal-env-from-peco-to-fzf
https://zenn.dev/fruitriin/scraps/5aa42e37bc57cb