Files
TerminalPolyjuice/zsh/alias/fzf_alias.sh
2026-01-31 21:30:00 +08:00

57 lines
1.8 KiB
Bash

if [[ -z "$FZF_DEFAULT_COMMAND" ]]; then
if (( $+commands[fd] )); then
export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git'
elif (( $+commands[rg] )); then
export FZF_DEFAULT_COMMAND='rg --files --hidden --glob "!.git/*"'
elif (( $+commands[ag] )); then
export FZF_DEFAULT_COMMAND='ag -l --hidden -g "" --ignore .git'
fi
fi
# alt-f to search files with fzf
function fzf-file-widget() {
local selected_file
local command_to_run="fzf"
if (( $+commands[fd] )); then
command_to_run="fd --type f --hidden --exclude .git | fzf"
elif (( $+commands[rg] )); then
command_to_run='rg --files --hidden --glob "!.git/*" | fzf'
elif (( $+commands[ag] )); then
command_to_run='ag -l --hidden -g "" --ignore .git | fzf'
else
command_to_run='find . -type f | fzf'
fi
selected_file=$(eval $command_to_run)
LBUFFER+="$selected_file"
}
# alt-f to trigger file search
zle -N fzf-file-widget
bindkey '\ef' fzf-file-widget
# alt-d to search directories with fzf
function fzf-directory-widget() {
local selected_dir
local command_to_run
if (( $+commands[fd] )); then
command_to_run="fd --type d --hidden --no-ignore --exclude .git | fzf"
else
command_to_run='find . -type d | fzf'
fi
selected_dir=$(eval $command_to_run)
LBUFFER+="$selected_dir"
}
# alt-d to trigger directory search
zle -N fzf-directory-widget
bindkey '\ed' fzf-directory-widget
# alt-h to search command history with fzf
function fzf-history-widget() {
local selected_command
selected_command=$(fc -frl 1 | fzf | awk '{$1=$2=$3=""; gsub(/^ +/, ""); print}')
LBUFFER+="$selected_command"
}
# alt-h to trigger history search
zle -N fzf-history-widget
bindkey '\eh' fzf-history-widget