fzfhistory

This commit is contained in:
thek4n 2026-03-12 16:57:02 +03:00
parent 342c6d186e
commit 97ea54f2b2

View File

@ -92,19 +92,34 @@ bindkey -M vicmd "^O" cddotdot
fzfhistory() {
LBUFFER="$( \
history -n 0 | \
local cmd
# fc -l 1 выводит всю историю с номерами.
# Мы используем процесс-подстановку <(...) чтобы передать вывод fc напрямую в fzf.
# Сед (sed) убирает номера строк в начале, оставляя только текст команды.
# Важно: fc корректно обрабатывает многострочные команды, не разрывая их.
cmd=$(fc -l 1 | \
sed 's/^[ ]*[0-9]*[ ]*//' | \
fzf \
--ignore-case \
--scheme=history \
--tac \
--no-multi \
--tiebreak=begin,index \
--height="$(($LINES/4))" \
--query="$BUFFER" \
)"
--preview="echo {}" \
--preview-window=wrap:30%:50%)
if [[ -n "$cmd" ]]; then
# Очищаем буфер и вставляем выбранную команду
BUFFER=$cmd
# Перемещаем курсор в конец строки (опционально, но удобно)
CURSOR=$#BUFFER
fi
zle reset-prompt
}
zle -N fzfhistory
bindkey "^R" fzfhistory
bindkey -M vicmd "^R" fzfhistory