diff --git a/zsh-fzf-history-search.plugin.zsh b/zsh-fzf-history-search.plugin.zsh new file mode 100644 index 0000000..13ae8e1 --- /dev/null +++ b/zsh-fzf-history-search.plugin.zsh @@ -0,0 +1,2 @@ +0=${(%):-%N} +source ${0:A:h}/zsh-fzf-history-search.zsh diff --git a/zsh-fzf-history-search.zsh b/zsh-fzf-history-search.zsh index af97444..295e7d9 100644 --- a/zsh-fzf-history-search.zsh +++ b/zsh-fzf-history-search.zsh @@ -1,13 +1,16 @@ -fzf_history_seach() { +# do nothing if fzf is not installed +(( ! $+commands[fzf] )) && return + +fzf_history_search() { setopt extendedglob - candidates=(${(f)"$(history -t '%Y-%m-%d %H:%M:%S' 0| fzf +s +m -x --tac -e -q "$BUFFER")"}) + candidates=(${(f)"$(fc -li -1 0 | fzf +s +m -x -e -q "$BUFFER")"}) BUFFER="${candidates[@]/(#m)*/${${(As: :)MATCH}[4,-1]}}" BUFFER="${BUFFER[@]/(#b)(?)\\n/$match[1] }" zle end-of-buffer-or-history } -autoload fzf_history_seach -zle -N fzf_history_seach +autoload fzf_history_search +zle -N fzf_history_search -bindkey '^r' fzf_history_seach +bindkey '^r' fzf_history_search