# https://github.com/junegunn/fzf set -gx FZF_DEFAULT_OPTS "--no-height --layout=reverse" set -gx FZF_DEFAULT_COMMAND "fd --type=file" function __fzf_files set -l output ( fd --type=file --hidden --follow --color=always --exclude=.git 2>/dev/null | fzf --ansi --preview='bat --style=header,numbers --color=always {}' --preview-window='right:70%:hidden:wrap' --bind='?:toggle-preview' --expect='ctrl-e' --header='ctrl-e to edit' ) set -l key $output[1] set -l file $output[2] switch $key case ctrl-e set -q EDITOR; or set EDITOR vim commandline -r "$EDITOR $file" case '*' commandline -i $file end commandline -f repaint end function __fzf_git_log if not git rev-parse --git-dir >/dev/null 2>&1 echo '__fzf_search_git_log: Not in a git repository!' >&2 else set -l output ( command git logsearch | fzf --ansi --tiebreak=index ) if set -l commit_hash (string split --max 1 " " $output)[1] commandline -i $commit_hash end end commandline -f repaint end function __fzf_history set -l separator ' | ' set -l output ( history search --null --show-time="%Y-%m-%d$separator" | fzf --read0 --tiebreak=index --query=(commandline) --preview='echo {}' --preview-window='bottom:50%:hidden:wrap' --bind='?:toggle-preview' ) if set -l command (string split --max 1 $separator $output)[2..-1] commandline -r $command end commandline -f repaint end