summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/key-bindings.zsh10
1 files changed, 6 insertions, 4 deletions
diff --git a/shell/key-bindings.zsh b/shell/key-bindings.zsh
index b64f7916..8a77047c 100644
--- a/shell/key-bindings.zsh
+++ b/shell/key-bindings.zsh
@@ -98,13 +98,15 @@ bindkey -M viins '\ec' fzf-cd-widget
fzf-history-widget() {
local selected num
setopt localoptions noglobsubst noposixbuiltins pipefail no_aliases 2> /dev/null
- selected=( $(fc -rl 1 | awk '{ cmd=$0; sub(/^[ \t]*[0-9]+\**[ \t]+/, "", cmd); if (!seen[cmd]++) print $0 }' |
- FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} ${FZF_DEFAULT_OPTS-} -n2..,.. --scheme=history --bind=ctrl-r:toggle-sort,ctrl-z:ignore ${FZF_CTRL_R_OPTS-} --query=${(qqq)LBUFFER} +m" $(__fzfcmd)) )
+ selected="$(fc -rl 1 | awk '{ cmd=$0; sub(/^[ \t]*[0-9]+\**[ \t]+/, "", cmd); if (!seen[cmd]++) print $0 }' |
+ FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} ${FZF_DEFAULT_OPTS-} -n2..,.. --scheme=history --bind=ctrl-r:toggle-sort,ctrl-z:ignore ${FZF_CTRL_R_OPTS-} --query=${(qqq)LBUFFER} +m" $(__fzfcmd))"
local ret=$?
if [ -n "$selected" ]; then
- num=$selected[1]
- if [ -n "$num" ]; then
+ num=$(awk '{print $1}' <<< "$selected")
+ if [[ "$num" =~ ^[1-9][0-9]*$ ]]; then
zle vi-fetch-history -n $num
+ else # selected is a custom query, not from history
+ LBUFFER="$selected"
fi
fi
zle reset-prompt