59 lines
1.8 KiB
Bash
59 lines
1.8 KiB
Bash
|
# Use ~~ as the trigger sequence instead of the default **
|
||
|
export FZF_COMPLETION_TRIGGER='~~'
|
||
|
|
||
|
# Options to fzf command
|
||
|
export FZF_COMPLETION_OPTS='--border --info=inline'
|
||
|
|
||
|
__fzfcmd() {
|
||
|
echo "fzf"
|
||
|
}
|
||
|
|
||
|
# ctrl+r - Paste the selected command from history into the command line
|
||
|
fzf-history-widget() {
|
||
|
local selected num
|
||
|
setopt localoptions noglobsubst noposixbuiltins pipefail HIST_FIND_NO_DUPS 2> /dev/null
|
||
|
|
||
|
selected=( $(fc -rl 1 |
|
||
|
FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} $FZF_DEFAULT_OPTS -n2..,.. --tiebreak=index --bind=ctrl-r:toggle-sort $FZF_CTRL_R_OPTS --query=${(qqq)LBUFFER} +m" $(__fzfcmd)) )
|
||
|
local ret=$?
|
||
|
if [ -n "$selected" ]; then
|
||
|
num=$selected[1]
|
||
|
if [ -n "$num" ]; then
|
||
|
zle vi-fetch-history -n $num
|
||
|
fi
|
||
|
fi
|
||
|
zle redisplay
|
||
|
typeset -f zle-line-init >/dev/null && zle zle-line-init
|
||
|
return $ret
|
||
|
}
|
||
|
zle -N fzf-history-widget
|
||
|
bindkey '^R' fzf-history-widget
|
||
|
|
||
|
# Use fd (https://github.com/sharkdp/fd) instead of the default find
|
||
|
# command for listing path candidates.
|
||
|
# - The first argument to the function ($1) is the base path to start traversal
|
||
|
# - See the source code (completion.{bash,zsh}) for the details.
|
||
|
_fzf_compgen_path() {
|
||
|
fd --hidden --follow --exclude ".git" . "$1"
|
||
|
}
|
||
|
|
||
|
# Use fd to generate the list for directory completion
|
||
|
_fzf_compgen_dir() {
|
||
|
fd --type d --hidden --follow --exclude ".git" . "$1"
|
||
|
}
|
||
|
|
||
|
# (EXPERIMENTAL) Advanced customization of fzf options via _fzf_comprun function
|
||
|
# - The first argument to the function is the name of the command.
|
||
|
# - You should make sure to pass the rest of the arguments to fzf.
|
||
|
_fzf_comprun() {
|
||
|
local command=$1
|
||
|
shift
|
||
|
|
||
|
case "$command" in
|
||
|
cd) fzf "$@" --preview 'tree -C {} | head -200' ;;
|
||
|
export|unset) fzf "$@" --preview "eval 'echo \$'{}" ;;
|
||
|
ssh) fzf "$@" --preview 'dig {}' ;;
|
||
|
*) fzf "$@" ;;
|
||
|
esac
|
||
|
}
|