From 61e71e1771dff7cd01b8fdbedfcc8ffe8e205cd3 Mon Sep 17 00:00:00 2001 From: thek4n Date: Thu, 12 Mar 2026 17:51:17 +0300 Subject: [PATCH] fix zsh history --- home/user/.config/zsh/mappings | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/home/user/.config/zsh/mappings b/home/user/.config/zsh/mappings index 8f7968c..b0743e8 100644 --- a/home/user/.config/zsh/mappings +++ b/home/user/.config/zsh/mappings @@ -93,27 +93,21 @@ bindkey -M vicmd "^O" cddotdot fzfhistory() { local cmd - # fc -l 1 выводит всю историю с номерами. - # Мы используем процесс-подстановку <(...) чтобы передать вывод fc напрямую в fzf. - # Сед (sed) убирает номера строк в начале, оставляя только текст команды. - # Важно: fc корректно обрабатывает многострочные команды, не разрывая их. - cmd=$(fc -l 1 | \ - sed 's/^[ ]*[0-9]*[ ]*//' | \ + sed 's/^[ ]*[0-9]*[ ]*//' | \ fzf \ --ignore-case \ --scheme=history \ --no-multi \ + --tac \ --tiebreak=begin,index \ - --height="$(($LINES/4))" \ - --query="$BUFFER" \ - --preview="echo {}" \ - --preview-window=wrap:30%:50%) + --height="$((${LINES}/4))" \ + --query="${BUFFER}" \ + --preview="echo {} | sed 's/\\\n/\\n/g' | highlight -O ansi -S zsh" \ + --preview-window=wrap:30%:50% | sed 's/\\n/\n/g') - if [[ -n "$cmd" ]]; then - # Очищаем буфер и вставляем выбранную команду - BUFFER=$cmd - # Перемещаем курсор в конец строки (опционально, но удобно) + if [[ -n "${cmd}" ]]; then + BUFFER="${cmd}" CURSOR=$#BUFFER fi