diff options
author | danztran <33027899+danztran@users.noreply.github.com> | 2024-01-05 08:47:54 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-05 10:47:54 +0900 |
commit | 2671259fdb3094a5eac528f291c1fdadbcf9eda9 (patch) | |
tree | 56d32da761edf8d84017e0fcaf29eba49894edd1 | |
parent | 20240101197348a78db5a1dac945a2dff6a4e654 (diff) |
[zsh] Make CTRL-R compatible with accept-or-print-query (#3557)
Fix #3556
Co-authored-by: Junegunn Choi <junegunn.c@gmail.com>
-rw-r--r-- | shell/key-bindings.zsh | 10 |
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 |