diff --git a/zsh-fzf-history-search.zsh b/zsh-fzf-history-search.zsh index a2ac16d..f813e0c 100644 --- a/zsh-fzf-history-search.zsh +++ b/zsh-fzf-history-search.zsh @@ -65,19 +65,22 @@ fzf_history_search() { else candidates=(${(f)"$(eval $history_cmd | fzf ${=ZSH_FZF_HISTORY_SEARCH_FZF_ARGS} ${=ZSH_FZF_HISTORY_SEARCH_FZF_EXTRA_ARGS})"}) fi + local ret=$? if [ -n "$candidates" ]; then - if (( $CANDIDATE_LEADING_FIELDS != 1 )); then - BUFFER="${candidates[@]/(#m)[0-9 \-\:]##/${${(As: :)MATCH}[${CANDIDATE_LEADING_FIELDS},-1]}}" + if (( ! $CANDIDATE_LEADING_FIELDS == 1 )); then + BUFFER="${candidates[@]/(#m)[0-9 \-\:]##/$( + printf '%s' "${${(As: :)MATCH}[${CANDIDATE_LEADING_FIELDS},-1]}" | sed 's/%/%%/g' + )}" else BUFFER="${(j| && |)candidates}" fi - BUFFER=$(printf "${BUFFER[@]//\\\\n/\\\\\\n}") zle vi-fetch-history -n $BUFFER if [ -n "${ZSH_FZF_HISTORY_SEARCH_END_OF_LINE}" ]; then zle end-of-line fi fi + zle reset-prompt return $ret }