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