summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordanztran <33027899+danztran@users.noreply.github.com>2024-01-05 08:47:54 +0700
committerGitHub <noreply@github.com>2024-01-05 10:47:54 +0900
commit2671259fdb3094a5eac528f291c1fdadbcf9eda9 (patch)
tree56d32da761edf8d84017e0fcaf29eba49894edd1
parent20240101197348a78db5a1dac945a2dff6a4e654 (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.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