|
|
@ -1,9 +1,37 @@ |
|
|
|
source /usr/share/zaw/zaw.zsh |
|
|
|
source /usr/share/zaw/zaw.zsh |
|
|
|
|
|
|
|
|
|
|
|
bindkey '^R' zaw-history |
|
|
|
# fzf |
|
|
|
bindkey -M filterselect '^R' down-line-or-history |
|
|
|
xsource /usr/share/fzf/key-bindings.zsh |
|
|
|
bindkey -M filterselect '^S' up-line-or-history |
|
|
|
xsource /usr/share/fzf/completion.zsh |
|
|
|
bindkey -M filterselect '^E' accept-search |
|
|
|
|
|
|
|
|
|
|
|
# fzf history search with support for Ctrl+E history edit like with zaw widget before |
|
|
|
|
|
|
|
if typeset -f fzf-history-widget > /dev/null; then |
|
|
|
|
|
|
|
# Copied form key-bindings.zsh |
|
|
|
|
|
|
|
# CTRL-R - Paste the selected command from history into the command line |
|
|
|
|
|
|
|
fzf-history-widget() { |
|
|
|
|
|
|
|
local selected num |
|
|
|
|
|
|
|
setopt localoptions noglobsubst noposixbuiltins pipefail no_aliases 2> /dev/null |
|
|
|
|
|
|
|
selected=( $(fc -rl 1 | perl -ne 'print if !$seen{(/^\s*[0-9]+\**\s+(.*)/, $1)}++' | |
|
|
|
|
|
|
|
FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} $FZF_DEFAULT_OPTS -n2..,.. --tiebreak=index --bind=ctrl-r:toggle-sort --expect=ctrl-e $FZF_CTRL_R_OPTS --query=${(qqq)LBUFFER} +m" $(__fzfcmd)) ) |
|
|
|
|
|
|
|
local ret=$? |
|
|
|
|
|
|
|
if [ -n "$selected" ]; then |
|
|
|
|
|
|
|
local accept=0 |
|
|
|
|
|
|
|
if [[ $selected[1] == ctrl-e ]]; then |
|
|
|
|
|
|
|
accept=1 |
|
|
|
|
|
|
|
shift selected |
|
|
|
|
|
|
|
fi |
|
|
|
|
|
|
|
num=$selected[1] |
|
|
|
|
|
|
|
if [ -n "$num" ]; then |
|
|
|
|
|
|
|
zle vi-fetch-history -n $num |
|
|
|
|
|
|
|
[[ $accept = 0 ]] && zle accept-line |
|
|
|
|
|
|
|
fi |
|
|
|
|
|
|
|
fi |
|
|
|
|
|
|
|
zle reset-prompt |
|
|
|
|
|
|
|
return $ret |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
zle -N fzf-history-widget |
|
|
|
|
|
|
|
bindkey '^R' fzf-history-widget |
|
|
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
zstyle ':filter-select:highlight' matched fg=green |
|
|
|
zstyle ':filter-select:highlight' matched fg=green |
|
|
|
zstyle ':filter-select' max-lines 3 |
|
|
|
zstyle ':filter-select' max-lines 3 |
|
|
|