From 2671259fdb3094a5eac528f291c1fdadbcf9eda9 Mon Sep 17 00:00:00 2001 From: danztran <33027899+danztran@users.noreply.github.com> Date: Fri, 5 Jan 2024 08:47:54 +0700 Subject: [zsh] Make CTRL-R compatible with accept-or-print-query (#3557) Fix #3556 Co-authored-by: Junegunn Choi --- shell/key-bindings.zsh | 10 ++++++---- 1 file 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 -- cgit v1.2.3