1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-fzf

Клонировать/Скачать
CHANGELOG.md 120 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 29.06.2025 17:06 a88d352

CHANGELOG

0.63.0

  • Добавлен футер. Стандартный стиль границы для футера — line, который рисует одинарную разделительную линию.
    fzf --reverse --footer "fzf: friend zone forever"
    • Опции
      • --footer-border[=STYLE]
      • --footer-label=LABEL
      • --footer-label-pos=COL[:bottom]
    • Цвета
      • footer
      • footer-bg
      • footer-border
      • footer-label
    • Действия
      • change-footer
      • transform-footer
      • bg-transform-footer
      • change-footer-label
      • transform-footer-label
      • bg-transform-footer-label
  • Стиль границы line теперь разрешён для всех типов границ, кроме --list-border.
    fzf --height 50% --style full:line --preview 'cat {}' \
        --bind 'focus:bg-transform-header(file {})+bg-transform-footer(wc {})'
  • Добавлен плейсхолдер-флаг {*}, который оценивается как все совпавшие элементы.
    seq 10000 | fzf --preview "awk '{sum += \$1} END {print sum}' {*f}"
    • Используйте это с осторожностью, так как это может замедлить работу fzf для больших списков.
  • Добавлены асинхронные действия трансформации с префиксом bg-, которые выполняются в фоновом режиме, а также действие bg-cancel для игнорирования текущих действий bg-transform.
    # Реализация всплывающего окна, которое исчезает через 1 секунду
    #   * Используйте футер в качестве всплывающего окна
    #   * Используйте `bell`, чтобы зазвонить в терминале
    #   * Используйте `bg-transform-footer`, чтобы очистить футер через 1 секунду
    #   * Используйте `bg-cancel`, чтобы игнорировать текущие фоновые действия трансформации
    fzf --multi --list-border \
        --bind 'enter:execute-silent(echo -n {+} | pbcopy)+bell' \
        --bind 'enter:+transform-footer(echo Copied {} to clipboard)' \
        --bind 'enter:+bg-cancel+bg-transform-footer(sleep 1)'
    
    # Нормально, если команды выполняются немного дольше, так как они выполняются в фоновом режиме
    GETTER='curl -s http://metaphorpsum.com/sentences/1'
    fzf --style full --border --preview : \
        --bind "focus:bg-transform-header:$GETTER" \
        --bind "focus:+bg-transform-footer:$GETTER" \
        --bind "focus:+bg-transform-border-label:$GETTER" \
        --bind "focus:+bg-transform-preview-label:$GETTER" \
        --bind "focus:+bg-transform-input-label:$GETTER" \
        --bind "focus:+bg-transform-list-label:$GETTER" \
        --bind "focus:+bg-transform-header-label:$GETTER" \
        --bind "focus:+bg-transform-footer-label:$GETTER" \
        --bind "focus:+bg-transform-ghost:$GETTER" \
        --bind "focus:+bg-transform-prompt:$GETTER"
  • Добавлена поддержка полной фонарной строки в разделе списка
    for i in $(seq 16 255); do
      echo -e "\x1b[48;5;${i}m\x1b[0Khello"
    done | fzf --ansi
  • Улучшения автозавершения SSH от @akinomyoga
  • Исправления ошибок и улучшения

0.62.0

  • Ослаблен синтаксис опции --color, чтобы разрешить записи, разделённые пробелами (в дополнение к запятым), что делает многострочные определения проще для написания и чтения
    # seoul256-light
    fzf --style full --color='
      fg:#616161 fg+:#616161
      bg:#ffffff bg+:#e9e9e9 alt-bg:#f1f1f1
      hl:#719872 hl+:#719899
      pointer:#e12672 marker:#e17899
      header:#719872
      spinner:#719899 info:#727100
      prompt:#0099bd query:#616161
      border:#e1e1e1
    '
  • Добавлен цвет alt-bg для создания полосатых строк, чтобы визуально разделять строки
    fzf --color bg:237,alt-bg:238,current-bg:236 --highlight-line
    
    declare -f | perl -0777 -pe 's/^}\n/}\0/gm' |
      bat --plain --language bash --color always |
      fzf --read0 --ansi --reverse --multi \
          --color bg:237,alt-bg:238,current-bg:236 --highlight-line
  • [fish] Улучшения в привязке CTRL-R (@bitraid)
    • Вы можете вызвать CTRL-R посередине команды, чтобы вставить выбранный элемент
    • Вы можете удалить элементы истории с помощью SHIFT-DEL
  • Исправления ошибок и улучшения
    • Исправлена ненужная задержка в 100 мс после reload (#4364)
    • Исправлена проблема с тем, что selected-bg не применяется к цветным элементам (#4372)

0.61.3

  • Отменена #4351, так как она вызывала ошибку при выполнении tmux run-shell 'fzf --tmux' (#4559 #4560)
  • Больше переменных окружения для дочерних процессов (#4356)

0.61.2

  • Исправлена паника при использовании границы заголовка без указателя/маркера (@phanen)
  • Исправлена опция --tmux, когда уже находитесь внутри попапа tmux (@peikk0)
  • Исправления ошибок и улучшения в привязке CTRL-T fish (#4334) (@bitraid)
  • Добавлена опция --no-tty-default, чтобы fzf искал текущее устройство TTY вместо использования /dev/tty по умолчанию (#4242)

0.61.1

  • Отключает режим скобок при выходе. Это исправляет проблему, при которой вставка перестаёт работать после выполнения fzf на старых версиях bash, которые не поддерживают этот режим.

0.61.0

  • Добавлена опция --ghost=TEXT для отображения призрачного текста, когда входные данные пусты
    # Отображает "Type to search", когда входные данные пусты
    fzf --ghost "Type to search"
  • Добавлены действия change-ghost и transform-ghost для динамического изменения призрачного текста
  • Добавлены действия change-pointer и transform-pointer для динамического изменения знака указателя
  • Добавлен флаг r для плейсхолдерного выражения (сырой режим) для неприкрытого вывода
  • Исправления ошибок и улучшения

0.60.3

  • Исправления ошибок и улучшения
    • [fish] Поддержка вставки нескольких команд истории (#4280) (@bitraid)
    • walker Добавление '/' к записям директорий на MSYS2 (#4281)
    • Обрезка пробелов в конце после обработки последовательностей ANSI (#4282)
    • Удаление временных файлов перед become, когда используется опция --tmux (#4283)
    • Исправление условия для использования кэша количества строк элемента (#4285) (@alex-huff)
    • Совместимость --accept-nth с --select-1 (#4287)
    • Увеличение ограничения длины запроса с 300 до 1000 (#4292)
    • [windows] Предотвращение потребления пользовательского ввода fzf во время паузы (#4260)

0.60.2

  • Шаблон для --with-nth и --accept-nth теперь поддерживает {n}, который оценивается как нулевой индекс элемента
  • Исправлена регрессия, которая приводила к обрезке последнего поля в выражении "nth", когда использовался разделитель регулярного выражения
    • Спасибо @phanen за исправление
  • Исправлено действие 'jump', когда указатель является пустой строкой

0.60.1

  • Исправления ошибок и незначительные улучшения
    • Встроенный обходчик теперь выводит записи директорий с завершающим слешем
    • Исправлена ошибка, вызывавшая непредвиденное поведение с fzf-tab. Обновитесь, если вы используете его.
  • Спасибо @alexeisersun, @bitraid, @Lompik и @fsc0 за вклад

0.60.0

Release highlights: https://junegunn.github.io/fzf/releases/0.60.0/

  • Добавлена опция --accept-nth для выбора выходных полей
    ps -ef | fzf --multi --header-lines 1 | awk '{print $2}'
    # Становится
    ps -ef | fzf --multi --header-lines 1 --accept-nth 2
    
    git branch | fzf | cut -c3-
    # Можно переписать как
    git branch | fzf --accept-nth -1
  • Опции --accept-nth и --with-nth теперь поддерживают шаблон, который включает несколько выражений индексов полей в фигурных скобках
    echo foo,bar,baz | fzf --delimiter , --accept-nth '{1}, {3}, {2}'
      # foo, baz, bar
    
    echo foo,bar,baz | fzf --delimiter , --with-nth '{1},{3},{2},{1..2}'
      # foo,baz,bar,foo,bar
  • Добавлены действия exclude и exclude-multi для динамического исключения элементов
    seq 100 | fzf --bind 'ctrl-x:exclude'
    
    # 'exclude-multi' будет исключать выбранные элементы или текущий элемент
    seq 100 | fzf --multi --bind 'ctrl-x:exclude-multi'
  • Окно предварительного просмотра теперь выводит индикатор переноса, когда перенос включен
    seq 100 | xargs | fzf --wrap --preview 'echo {}' --preview-window wrap
  • Исправления ошибок и улучшения

0.59.0

Release highlights: https://junegunn.github.io/fzf/releases/0.59.0/

  • Приоритизация совпадений имен файлов (#4192)
    • Добавлена новая опция разрешения конфликтов pathname для приоритизации совпадений имен файлов
    • Опция --scheme=path теперь устанавливает --tiebreak=pathname,length
    • Fzf автоматически выбирает схему path
      • когда входные данные — устройство TTY, где fzf начинает свой встроенный обходчик или выполняет $FZF_DEFAULT_COMMAND, который обычно является командой для перечисления файлов,
      • но не тогда, когда действие reload или transform привязано к событию start, так как в этом случае fzf не может быть уверен в типе входных данных.
  • Добавлена опция --header-lines-border для отображения заголовка из --header-lines с отдельной границей
    # Используйте --header-lines-border для разделения двух заголовков
    ps -ef | fzf --style full --layout reverse --header-lines 1 \
                 --bind 'ctrl-r:reload(ps -ef)' --header 'Press CTRL-R to reload' \
                 --header-lines-border bottom --no-list-border
  • Событие click-header теперь устанавливает $FZF_CLICK_HEADER_WORD и $FZF_CLICK_HEADER_NTH. Вы можете использовать их для реализации кликабельного заголовка для изменения области поиска с помощью нового действия transform-nth.
    # Нажмите на строку заголовка, чтобы ограничить область поиска
    ps -ef | fzf --style full --layout reverse --header-lines 1 \
                 --header-lines-border bottom --no-list-border \
                 --color fg:dim,nth:regular \
                 --bind 'click-header:transform-nth(
                           echo $FZF_CLICK_HEADER_NTH
                         )+transform-prompt(
                           echo "$FZF_CLICK_HEADER_WORD> "
                         )'
    • $FZF_KEY был обновлён для раскрытия типа клика. Например, click, ctrl-click и т.д. Вы можете использовать его для реализации более сложного поведения.
    • Завершение команды kill для bash и zsh было обновлено для использования этой функции.
  • Добавлена опция --no-input, чтобы полностью отключить и скрыть раздел ввода.
    # Нажмите заголовок, чтобы запустить поиск
    fzf --header '[src] [test]' --no-input --layout reverse \
        --header-border bottom --input-border \
        --bind 'click-header:transform-search:echo ${FZF_CLICK_HEADER_WORD:1:-1}'
    
    # Режим переключения, как в Vim
    fzf --layout reverse-list --no-input \
        --bind 'j:down,k:up,/:show-input+unbind(j,k,/)' \
        --bind 'enter,esc,ctrl-c:transform:
          if [[ $FZF_INPUT_STATE = enabled ]]; then
            echo "rebind(j,k,/)+hide-input"
          elif [[ $FZF_KEY = enter ]]; then
            echo accept
          else
            echo abort
          fi
        '
    • Вы можете позже показать раздел ввода с помощью действия show-input или toggle-input, а затем снова скрыть его с помощью действия hide-input или toggle-input.
  • Расширен плейсхолдер {q} для поддержки диапазонов. Например, {q:1}, {q:2..} и т.д.
  • Добавлены действия search(...) и transform-search(...) для запуска поиска fzf с произвольной строкой запроса. Это можно использовать для расширения синтаксиса поиска fzf. В следующем примере fzf будет использовать первое слово запроса для запуска поиска ripgrep и использовать оставшуюся часть запроса для выполнения поиска fzf внутри результата.
    export TEMP=$(mktemp -u)
    trap 'rm -f "$TEMP"' EXIT
    
    TRANSFORMER='
      rg_pat={q:1}      # Первое слово передаётся ripgrep
      fzf_pat={q:2..}   # Остальное передаётся fzf
    
      if ! [[ -r "$TEMP" ]] || [[ $rg_pat != $(cat "$TEMP") ]]; then
        echo "$rg_pat" > "$TEMP"
        printf "reload:sleep 0.1; rg --column --line-number --no-heading --color=always --smart-case %q || true" "$rg_pat"
      fi
      echo "+search:$fzf_pat"
    '
    fzf --ansi --disabled \
      --with-shell 'bash -c' \
      --bind "start,change:transform:$TRANSFORMER"
  • Теперь вы можете привязывать действия к нескольким клавишам и событиям одновременно, записывая список клавиш и событий через запятую перед двоеточием.
    # Загрузите вывод 'ps -ef' при запуске и перезагрузите его при нажатии CTRL-R
    fzf --bind 'start,ctrl-r:reload:ps -ef'
  • Опция --min-height теперь принимает число, за которым следует +, что указывает fzf отображать хотя бы столько элементов в разделе списка. Стандартное значение теперь изменено на 10+.
    # Вы увидите только раздел ввода, который занимает три строки.
    fzf --style=full --height 1% --min-height 3
    
    # Вы увидите три элемента в разделе списка.
    fzf --style full --height 1% --min-height 3+
    • Скрипты интеграции оболочки были обновлены для использования значения по умолчанию --min-height 20+.
  • Заголовки из --header-lines будут отображаться сверху в макете reverse-list.
  • Добавлено действие bell, чтобы зазвонить в терминале.
    # Нажмите CTRL-Y, чтобы скопировать текущую строку в буфер обмена и зазвонить.
    fzf --bind 'ctrl-y:execute-silent(echo -n {} | pbcopy)+bell'
  • Добавлено действие toggle-bind.
  • Исправления ошибок и улучшения.
  • Исправлен скрипт fish для поддержки fish версии 3.1.2 или выше (@bitraid).

0.58.0

Release highlights: https://junegunn.github.io/fzf/releases/0.58.0/

Эта версия introduces три новых типа границ, --list-border, --input-border и --header-border, предлагающих гораздо большую гибкость для настройки пользовательского интерфейса.

Также fzf теперь предлагает "стилевые пресеты" для быстрой настройки, которые можно активировать с помощью опции --style.

Пресет Скриншот
default
full
minimal
  • Стилевые пресеты (#4160)
    • --style=full[:BORDER_STYLE]
    • --style=default
    • --style=minimal
  • Граница и метка для раздела списка (#4148)
    • Опции:
      • --list-border[=STYLE]
      • --list-label=LABEL
      • --list-label-pos=COL[:bottom]
    • Цвета:
      • list-fg
      • list-bg
      • list-border
      • list-label
    • Действия:
      • change-list-label
      • transform-list-label
  • Граница и метка для раздела ввода (строка приглашения и строка информации) (#4154)
    • Опции:
      • --input-border[=STYLE]
      • --input-label=LABEL
      • --input-label-pos=COL[:bottom]
    • Цвета:
      • input-fg (query)
      • input-bg
      • input-border
      • input-label
    • Действия:
      • change-input-label
      • transform-input-label
  • Граница и метка для раздела заголовка (#4159)
    • Опции:
      • --header-border[=STYLE]
      • --header-label=LABEL
      • --header-label-pos=COL[:bottom]
    • Цвета:
      • header-fg (header)
      • header-bg
      • header-border
      • header-label
    • Действия:
      • change-header-label
      • transform-header-label
  • Добавлена опция --preview-border[=STYLE] как сокращение для --preview-window=border[-STYLE].
  • Добавлен новый стиль границы предварительного просмотра line, который рисует одинарную разделительную линию между окном предварительного просмотра и остальной частью интерфейса.
  • Fzf теперь будет рисовать пунктирную линию (┈┈) в каждом интервале (--gap) для лучшей визуальной разделяемости.
# Все функции bash, выделенные цветом.
declare -f |
perl -0777 -pe 's/^}\n/}\0/gm' |
bat --plain –language bash –color always |
fzf –read0 –ansi –layout reverse –multi –highlight-line –gap 
  • Вы можете настроить линию с помощью опции --gap-line[=STR].
  • Вы можете указать значение border-native для опции --tmux, чтобы использовать родную границу tmux вместо опции -border. Это может быть полезно, если вы запускаете другую программу изнутри попапа.
fzf –tmux border-native –bind 'enter:execute:less {}'
  • Добавлено действие toggle-multi-line.
  • Добавлено действие toggle-hscroll.
  • Добавлено действие change-nth для динамического изменения значения опции -nth.
# Начните с `-nth` равным 1, затем измените на 2, затем на 3, затем вернитесь к значению по умолчанию (1).
echo 'foo foobar foobarbaz' | fzf –bind 'space:change-nth(2|3|)' –nth 1 –q foo 
  • Части -nth каждой строки теперь могут отображаться разными стилями текста.
# `-nth` в другом стиле.
ls –al | fzf –nth=-1 –color nth:italic 
ls –al | fzf –nth=-1 –color nth:reverse 
ls –al | fzf –nth=-1 –color nth:reverse:bold 

# Уменьшение яркости других частей.
ls –al | fzf –nth=-1 –color nth:regular,fg:dim 

# С действием change-nth. Текущее значение `-nth` экспортируется как $FZF_NTH.
ps –ef | fzf –reverse –header-lines=1 –header-border=bottom –input-border \
             –color nth:regular,fg:dim \
             –bind 'ctrl-n:change-nth(8..|1|2|3|4|5|6|7|)' \
             –bind 'result:transform-prompt:echo "${FZF_NTH}> "' 
  • Односимвольный разделитель теперь рассматривается как обычный строковый разделитель, а не как разделитель регулярного выражения, даже если это метасимвол регулярного выражения.
  • Это означает, что вы можете просто написать -delimiter '|', вместо того чтобы экранировать его как -delimiter '\|'.
  • Исправления ошибок.
  • Исправления ошибок и улучшения в скриптах fish (спасибо @bitraid).

0.57.0

  • Теперь вы можете изменять размер окна предварительного просмотра путём перетаскивания границы.
  • Улучшения встроенного обходчика:
    • -walker-root может принимать несколько аргументов директорий. Например, -walker-root include src lib.
    • -walker-skip может обрабатывать многосоставные шаблоны. Например, -walker-skip target/build.
  • Удалена долгая задержка при обработке изображений в окне предварительного просмотра.
  • Переменные окружения FZF_PREVIEW_* экспортируются во все дочерние процессы (#4098).
  • Исправления ошибок в скриптах fish.

0.56.3

  • Исправления ошибок в скриптах zsh:
    • fix(zsh): обработка граничного случая триггера обратной кавычки (#4090).
    • revert(zsh): удаление вызова 'fc –RI' в виджете истории (#4093).
  • Спасибо @LangLangBart за вклад.

0.56.2

  • Исправления ошибок:
    • Исправлена аномальная прокрутка при установленной опции -wrap (#4083).
    • [zsh] Исправлено сообщение об ошибке при установленной опции ksh_arrays (#4084).

0.56.1

  • Исправления ошибок и улучшения:
    • Исправлена гонка состояний, которая могла вызывать отображение устаревших результатов после выполнения команды reload (#4070).
    • Действия page-up и page-down теперь корректно работают с многострочными элементами (#4069).
    • {n} допускается в выражении SCROLL опции -preview-window (#4079).
    • [zsh] Исправлена регрессия при загрузке истории с общими параметрами (#4071).
    • [zsh] Улучшение извлечения команды в zsh автозавершении (#4082).
  • Спасибо @LangLangBart, @jaydee-coder, @alex-huff и @vejkse за вклад.

0.56.0

  • Добавлена опция -gap[=N] для отображения пустых строк между элементами.
  • Это может быть полезно для визуального разделения смежных многострочных элементов.
# Все функции bash, выделенные цветом.
declare –f | perl –0777 –pe 's/^}\n/}\0/gm' |
bat –plain –language bash –color always |
fzf –read0 –ansi –reverse –multi –highlight-line –gap 
  • Или просто чтобы сделать список легче читаемым. Для однострочных элементов вы, вероятно, захотите установить -color gutter:-1, чтобы скрыть пустую строку.
fzf –info inline-right –gap –color gutter:-1 
  • Добавлена опция noinfo к -preview-window, чтобы скрыть индикатор прокрутки в окне предварительного просмотра.
  • Исправления ошибок:
  • Спасибо @LangLangBart, @akinomyoga и @charlievieth за исправление ошибок.

0.55.0

Release highlights: https://junegunn.github.io/fzf/releases/0.55.0/

  • Добавлен тип поискового синтаксиса exact-boundary-match. Когда поисковый термин заключён в одинарные кавычки, fzf будет искать точные совпадения строки с обоими концами на границах слов.
fzf –query "'here'" << EOF 
come here 
not there 
EOF 
  • [bash] Поддержка нечёткого завершения пути добавлена ко всем командам:
  • Если стандартное завершение ещё не установлено;
  • Если текущий bash поддерживает опцию complete –D;
  • Однако нечёткое завершение некоторых команд может быть «динамически» отключено загрузчиком динамического завершения;
  • Подробнее см. комментарий к функции __fzf_default_completion.
  • Теперь комментарии допускаются в переменных окружения $FZF_DEFAULT_OPTS и $FZF_DEFAULT_OPTS_FILE.
export FZF_DEFAULT_OPTS=' 
# Опции макета 
–layout=reverse 
–info=inline-right   # Показывать информацию справа от строки приглашения 
# ... 
' 
  • Теперь поддерживаются гиперссылки (OSC 8) в окне предварительного просмотра и основном окне.
printf '<< \e]8;;http://github.com/junegunn/fzf\e\\Link to \e[32mfz\e[0mf\e]8;;\e\\ >>' | fzf –ansi 
```fzf –preview "printf '<< \e]8;;http://github.com/junegunn/fzf\e\\Ссылка на \e[32mfz\e[0mf\e]8;;\e\\ >>'"
  • Теперь стандартное значение -ellipsis — это «··» вместо «..».
  • [vim] У спецификации может быть обратный вызов exit, который вызывается со статусом завершения fzf.
  • Это можно использовать для очистки временных ресурсов или восстановления исходного состояния при закрытии fzf без выбора элемента.
  • Исправлена опция -tmux bottom, когда строка состояния не находится внизу.
  • Исправлена дополнительная прокрутка при многострочном режиме (–read0 или -wrap).
  • Добавлена резервная команда ps для завершения команд kill на Cygwin.

0.54.3

  • Исправлена несовместимость спецификации адаптивной высоты и 'start:reload'.
# Регрессия в версии 0.54.0 могла вызвать эту ошибку.
fzf –height '~100%' –bind 'start:reload:seq 10'
  • Теперь переменные окружения доступны для $FZF_DEFAULT_COMMAND.
FZF_DEFAULT_COMMAND='echo $FZF_QUERY' fzf –query foo 

0.54.2

  • Исправлена некорректная подсветка синтаксиса обрезанных многострочных записей.
  • Обновлён GoReleaser до версии 2.1.0 для упрощения нотариализации macOS бинарников.
  • Архивы macOS будут находиться в формате tar.gz вместо zip, так как мы больше не нотариализуем zip файлы, а только бинарники.
  • (Windows) Отменено исправление mintty из версии 0.54.0.
  • В результате мышь может не работать на mintty в полноэкранном режиме. Однако fzf корректно читает непечатаемые символы во полноэкранном режиме (–no-height).
  • К сожалению, fzf не может читать непечатаемые символы при работе не во полноэкранном режиме на Windows. Поэтому, если вам нужно вводить непечатаемые символы, добавьте -no-height к вашим $FZF_DEFAULT_OPTS.
  • Любая помощь в решении этой проблемы будет приветствоваться (#3799, #3847).

0.54.1

  • Обновлена зависимость fastwalk для встроенного обходчика директорий:
  • fastwalk: add optional sorting and improve documentation
  • fastwalk: only check if MSYSTEM is set during MSYS/MSYS2
  • Спасибо @charlievieth.
  • Отменена привязка ALT-C fish к использованию cd вместо builtin cd:
  • Builtin cd был добавлен для решения бага cd из zoxide init –cmd cd fish, который не мог обрабатывать аргумент –.
  • Однако стандартная функция cd fish фактически является обёрткой для поддержки cd -, поэтому мы хотим использовать её вместо этого.
  • Подробнее см. #3928 и рассмотрите возможность помощи zoxide в решении бага.

0.54.0

Release highlights: https://junegunn.github.io/fzf/releases/0.54.0/

  • Реализован перенос длинных строк:
  • Опция -wrap позволяет переносить строки.
  • Опция -wrap-sign позволяет настраивать символ переноса (по умолчанию — «↳ »).
  • Действие toggle-wrap переключает перенос строк.
history | fzf –tac –wrap –bind 'ctrl-/toggle-wrap' –wrap-sign $'\t↳ '
  • По умолчанию fzf привязывает клавиши CTRL-/ и ALT-/ к действию toggle-wrap.
  • Обновлены скрипты интеграции оболочки для использования переноса строк:
  • Привязка CTRL-R теперь включает -wrap-sign $'\t↳ ' для отступа перенесённых строк.
  • Завершение команд kill ** использует -wrap, чтобы показывать всю строку по умолчанию вместо отображения её в окне предварительного просмотра.
  • Добавлена опция -info-command для настройки информационной строки:
# Предварительно добавьте текущую позицию курсора жёлтым цветом.
fzf –info-command='echo –e "\x1b[33;1m$FZF_POS\x1b[m/$FZF_INFO 💛"'
  • $FZF_INFO установлен на исходный текст информации;
  • Поддерживаются коды цветов ANSI;
  • Значки указателя и0.51.0

  • Добавлена новая переменная окружения $FZF_POS, экспортируемая в дочерние процессы. Это вертикальная позиция курсора в списке, начиная с 1.
    # Переключение выбора вверх или вниз
    seq 30 | fzf --multi --bind 'load:pos(10)' \
      --bind 'shift-up:transform:for _ in $(seq $FZF_POS $FZF_MATCH_COUNT); do echo -n +toggle+up; done' \
      --bind 'shift-down:transform:for _ in $(seq 1 $FZF_POS); do echo -n +toggle+down; done'
  • Добавлена опция --with-shell для запуска дочерних процессов с пользовательской командой и флагами оболочки
    gem list | fzf --with-shell 'ruby -e' \
      --preview 'pp Gem::Specification.find_by_name({1})' \
      --bind 'ctrl-o:execute-silent:
          spec = Gem::Specification.find_by_name({1})
          [spec.homepage, *spec.metadata.filter { _1.end_with?("uri") }.values].uniq.each do
            system "open", _1
          end
      '
  • Добавлена действие change-multi для динамического изменения опции --multi
    • change-multi - включить режим многос выбора без ограничений
    • change-multi(NUM) - включить режим многос выбора с ограничением
    • change-multi(0) - отключить режим многос выбора
  • Улучшения для Windows
    • Действие become теперь поддерживается на Windows
      • В отличие от *nix, это не использует execve(2). Вместо этого запускается новый процесс и ожидается его завершение, поэтому поведение может немного отличаться.
    • Исправлена экранировка аргументов для Windows cmd.exe. Не происходит избыточного экранирования обратных слешей.
  • Исправления ошибок и улучшения

0.50.0

  • Оптимизация производительности поиска. В некоторых сценариях можно наблюдать улучшение на 50% и более.
    $ rg --line-number --no-heading --smart-case . > $DATA
    
    $ wc < $DATA
     5520118 26862362 897487793
    
    $ hyperfine -w 1 -L bin fzf-0.49.0,fzf-7ce6452,fzf-a5447b8,fzf '{bin} --filter "///" < $DATA | head -30'
    Summary
      fzf --filter "///" < $DATA | head -30 ran
        1.16 ± 0.03 times faster than fzf-a5447b8 --filter "///" < $DATA | head -30
        1.23 ± 0.03 times faster than fzf-7ce6452 --filter "///" < $DATA | head -30
        1.52 ± 0.03 times faster than fzf-0.49.0 --filter "///" < $DATA | head -30
  • Добавлены события jump и jump-cancel, которые вызываются при выходе из режима jump
    # Стандартное поведение
    fzf --bind space:jump
    
    # То же самое, что и действие jump-accept
    fzf --bind space:jump,jump:accept
    
    # Принять при jump, отменить при cancel
    fzf --bind space:jump,jump:accept,jump-cancel:abort
    
    # Изменить заголовок при jump-cancel
    fzf --bind 'space:change-header(Тип метки перехода)+jump,jump-cancel:change-header:Переход отменён'
  • Добавлена новая переменная окружения $FZF_KEY, экспортируемая в дочерние процессы. Это имя последней нажатой клавиши.
    fzf --bind 'space:jump,jump:accept,jump-cancel:transform:[[ $FZF_KEY =~ ctrl-c ]] && echo abort'
  • fzf можно собрать с опциями профилирования. Подробнее см. BUILD.md.
  • Исправления ошибок

0.49.0

  • Производительность загрузки улучшена примерно на 40% (в зависимости от опций)
  • --info=hidden и --info=inline-right больше не будут скрывать горизонтальный разделитель по умолчанию. Это предоставляет больше гибкости для настройки макета.
    fzf --border --info=inline-right
    fzf --border --info=inline-right --separator
    fzf --border --info=inline-right --no-separator
    fzf --border --info=hidden
    fzf --border --info=hidden --separator
    fzf --border --info=hidden --no-separator
  • Добавлены две переменные окружения, экспортируемые в дочерние процессы
    • FZF_PREVIEW_LABEL
    • FZF_BORDER_LABEL
    # Используйте текущее значение $FZF_PREVIEW_LABEL для определения действий, которые нужно выполнить
    git ls-files |
      fzf --header 'Нажмите CTRL-P для изменения режима предварительного просмотра' \
          --bind='ctrl-p:transform:[[ $FZF_PREVIEW_LABEL =~ cat ]] \
          && echo "change-preview(git log --color=always \{})+change-preview-label([[ log ]])" \
          || echo "change-preview(bat --color=always \{})+change-preview-label([[ cat ]])"'
  • Переименовано действие track в track-current для выделения различий между глобальным состоянием отслеживания, установленным с помощью --track, и одноразовым действием отслеживания
    • track все еще доступно как псевдоним
  • Добавлены действия untrack-current и toggle-track-current
    • Действия *-current не имеют эффекта, когда глобальное состояние отслеживания установлено
  • Исправления ошибок и незначительные улучшения

0.48.1

  • Связки клавиш CTRL-T и ALT-C можно отключить, установив FZF_CTRL_T_COMMAND и FZF_ALT_C_COMMAND в пустые строки соответственно при подключении скрипта
    # bash
    FZF_CTRL_T_COMMAND= FZF_ALT_C_COMMAND= eval "$(fzf --bash)"
    
    # zsh
    FZF_CTRL_T_COMMAND= FZF_ALT_C_COMMAND= eval "$(fzf --zsh)"
    
    # fish
    fzf --fish | FZF_CTRL_T_COMMAND= FZF_ALT_C_COMMAND= source
    • Установка переменных после подключения скрипта не будет иметь эффекта
  • Исправления ошибок

0.48.0

  • Скрипты интеграции оболочки теперь встроены в бинарный файл fzf. Это упрощает распространение, и пользователи реже сталкиваются с проблемами, вызванными использованием несовместимых скриптов и бинарных файлов.
    • bash
      # Настройка связок клавиш и размытого завершения для fzf
      eval "$(fzf --bash)"
    • zsh
      # Настройка связок клавиш и размытого завершения для fzf
      eval "$(fzf --zsh)"
    • fish
      # Настройка связок клавиш для fzf
      fzf --fish | source
  • Добавлены опции для настройки поведения встроенного обходчика файловой системы
    Опция Описание По умолчанию
    --walker=OPTS Опции обходчика ([file][,dir][,follow][,hidden]) file,follow,hidden
    --walker-root=DIR Корневая директория, с которой начинается обход .
    --walker-skip=DIRS Список директорий, разделенных запятыми, которые нужно пропустить .git,node_modules
    • Примеры
      # Встроенный обходчик используется только автономной версией fzf, если $FZF_DEFAULT_COMMAND не установлено
      unset FZF_DEFAULT_COMMAND
      
      fzf # по умолчанию: --walker=file,follow,hidden --walker-root=. --walker-skip=.git,node_modules
      fzf --walker=file,dir,hidden,follow --walker-skip=.git,node_modules,target
      
      # Опции обходчика в $FZF_DEFAULT_OPTS
      export FZF_DEFAULT_OPTS="--walker=file,dir,hidden,follow --walker-skip=.git,node_modules,target"
      fzf
      
      # Чтение из STDIN; опция --walker игнорируется
      seq 100 | fzf --walker=dir
      
      # Чтение из $FZF_DEFAULT_COMMAND; опция --walker игнорируется
      export FZF_DEFAULT_COMMAND='seq 100'
      fzf --walker=dir
  • Скрипты интеграции оболочки обновлены для использования встроенного обходчика с новыми опциями и теперь работают быстрее из коробки.

0.47.0

  • Заменена "стандартная команда find" на встроенный обходчик директорий для упрощения кода и достижения лучшей производительности и согласованного поведения на разных платформах. Это не повлияет на вас, если у вас установлено $FZF_DEFAULT_COMMAND.
    • Изменения, нарушающие совместимость:
      • В отличие от предыдущей команды "find", новый код обхода будет выводить скрытые файлы, но скрытые директории все еще будут игнорироваться.
      • Отсутствует фильтрация типов devtmpfs или proc.
      • Обход параллелизирован, поэтому порядок элементов будет различаться каждый раз.
    • Вы можете удивиться, почему fzf реализует обходчик директорий, если это программа фильтрации, следующая философии Unix. Но fzf уже много лет имеет код обходчика для решения проблемы производительности на Windows. И я решил использовать тот же подход на разных платформах для перечисленных выше преимуществ.
    • Встроенный обходчик использует отличную библиотеку charlievieth/fastwalk, которая легко превосходит своих конкурентов и поддерживает безопасное следование символическим ссылкам.
  • Добавлена $FZF_DEFAULT_OPTS_FILE для управления стандартными опциями в файле.
    • См. #3618
    • Приоритет опций от нижнего к верхнему:
      1. Опции, прочитанные из $FZF_DEFAULT_OPTS_FILE
      2. Опции из $FZF_DEFAULT_OPTS
      3. Опции из аргументов командной строки
  • Исправления ошибок и улучшения

0.46.1

  • Исправления ошибок и улучшения
  • Исправлены Windows бинарные файлы
  • Версия Go понижена до 1.20 для поддержки старых версий Windows.
  • Обновлена зависимость rivo/uniseg до v0.4.6

0.46.0

  • Добавлены два новых события:
    • result - вызывается, когда фильтрация текущего запроса завершена и список результатов готов.
    • resize - вызывается, когда изменяется размер терминала.
  • Теперь fzf экспортирует следующие переменные окружения в дочерние процессы:
    Переменная Описание
    FZF_LINES Количество строк, занимаемых fzf, исключая отступы и поля
    FZF_COLUMNS Количество столбцов, занимаемых fzf, исключая отступы и поля
    FZF_TOTAL_COUNT Общее количество элементов
    FZF_MATCH_COUNT Количество совпадающих элементов
    FZF_SELECT_COUNT Количество выбранных элементов
    FZF_QUERY Текущая строка запроса
    FZF_PROMPT Строка приглашения
    FZF_ACTION Имя последнего выполненного действия
    • Это позволяет вам писать сложные преобразования следующим образом:
      # Скрипт для динамического изменения размера окна предварительного просмотра
      transformer='
        # Одна строка для информации, другая для приглашения и еще две строки для границ окна предварительного просмотра
        lines=$(( FZF_LINES - FZF_MATCH_COUNT - 4 ))
        if [[ $FZF_MATCH_COUNT -eq 0 ]]; then
          echo "change-preview-window:hidden"
        elif [[ $lines -gt 3 ]]; then
          echo "change-preview-window:$lines"
        elif [[ $FZF_PREVIEW_LINES -ne 3 ]]; then
          echo "change-preview-window:3"
        fi
      '
      seq 10000 | fzf --preview 'seq {} 10000' --preview-window up \
                      --bind "result:transform:$transformer" \
                      --bind "resize:transform:$transformer"
    • Мы постепенно отказываемся от {fzf:prompt} и {fzf:action}
  • Зависимость mattn/go-runewidth заменена на rivo/uniseg для точных результатов.
    • Установите --ambidouble, если ваш терминал отображает символы с неопределенной шириной (например, символы рисования рамки) как два столбца.
    • RUNEWIDTH_EASTASIAN=1 все еще учитывается для обратной совместимости, но рекомендуется использовать новую опцию вместо этого.
  • Исправления ошибок

0.45.0

  • Добавлено действие transform для условного выполнения серии действий:
    # Запретить выбор пустой строки:
    echo -e "1. Hello\n2. Goodbye\n\n3. Exit" |
      fzf --height '~100%' --reverse --header 'Выберите один' \
          --bind 'enter:transform:[[ -n {} ]] && echo accept || echo "change-header:Недопустимый выбор"'
    
    # Переместить курсор за пустую строку:
    echo -e "1. Hello\n2. Goodbye\n\n3. Exit" |
      fzf --height '~100%' --reverse --header 'Выберите один' \
          --bind 'enter:transform:[[ -n {} ]] && echo accept || echo "change-header:Недопустимый выбор"' \
          --bind 'focus:transform:[[ -n {} ]] && exit; [[ {fzf:action} =~ up$ ]] && echo up || echo down'
    
    # Одно нажатие клавиши для переключения между режимами:
    fd --type file |
      fzf --prompt 'Файлы> ' \
          --header 'CTRL-T: Переключение между Файлами/Директориями' \
          --bind 'ctrl-t:transform:[[ ! {fzf:prompt} =~ Файлы ]] &&
                    echo "change-prompt(Файлы> )+reload(fd --type file)" ||
                    echo "change-prompt(Директории> )+reload(fd --type directory)"'
  • Добавлены заполнители выражений:
    • {fzf:action} - Имя последнего выполненного действия.
    • {fzf:prompt} - Строка приглашения (включая коды цвета ANSI).
    • {fzf:query} - Синоним для {q}.
  • Добавлена поддержка отрицательной высоты:
    # Высота терминала минус один, чтобы вы могли видеть командную строку:
    fzf --height=-1
    • Это лучше обрабатывает изменение размера терминала по сравнению с --height=$(($(tput lines) - 1)).
  • Добавлено действие accept-or-print-query, которое работает как accept, но выводит текущий запрос, если нет совпадений:
    # Вы можете сделать так, чтобы CTRL-R вставлял текущий запрос при отсутствии совпадений:
    export FZF_CTRL_R_OPTS='--bind enter:accept-or-print-query'
    • Обратите внимание, что есть альтернативные способы реализации той же стратегии:
      # 'become' очевидно более универсально, но недоступно на Windows.
      export FZF_CTRL_R_OPTS='--bind "enter:become:if [ -z {} ]; then echo {q}; else echo {}; fi"'
      
      # Используя новое действие 'transform':
      export FZF_CTRL_R_OPTS='--bind "enter:transform:[ -z {} ] && echo print-query || echo accept"'
  • Добавлены действия show-header и hide-header.
  • Исправления ошибок.

0.44.1

  • Исправлена ошибка краха при скрытии окна предварительного просмотра на событии focus.

0.44.0

  • (Экспериментально) Поддержка изображений Sixel в окне предварительного просмотра (недоступно на Windows):
    • bin/fzf-preview.sh добавлено для демонстрации того, как отображать изображение с использованием протокола изображений Kitty или Sixel. Вы можете использовать его следующим образом:
      fzf --preview='fzf-preview.sh {}'
  • (Экспериментально) Поддержка протокола встроенных изображений iTerm2 в окне предварительного просмотра (недоступно на Windows):
    # Используя https://iterm2.com/utilities/imgcat:
    fzf --preview 'imgcat -W $FZF_PREVIEW_COLUMNS -H $FZF_PREVIEW_LINES {}'
  • HTTP-сервер можно настроить для приема удаленных соединений:
    # FZF_API_KEY требуется для прослушивания адреса отличного от localhost:
    export FZF_API_KEY="$(head -c 32 /dev/urandom | base64)"
    fzf --listen 0.0.0.0:6266
    • Для разрешения удаленного выполнения процессов используйте --listen-unsafe вместо этого (execute*, reload*, become, preview, change-preview, transform-*)
      fzf --listen-unsafe 0.0.0.0:6266
  • Исправления ошибок.

0.43.0

  • (Экспериментально) Добавлена поддержка протокола изображений Kitty в окне предварительного просмотра (недоступно на Windows):
    fzf --preview='
      if file --mime-type {} | grep -qF image/; then
        # --transfer-mode=memory — самый быстрый вариант, но если вы хотите, чтобы fzf мог перерисовывать изображение при изменении размера терминала или при событии 'change-preview-window',
        # вам нужно использовать --transfer-mode=stream.
        kitty icat --clear --transfer-mode=memory --unicode-placeholder --stdin=no --place=${FZF_PREVIEW_COLUMNS}x${FZF_PREVIEW_LINES}@0x0 {} | sed \$d
      else
        bat --color=always {}
      fi
    '
- (Экспериментально) HTTP-сервер может сообщать состояние программы в формате JSON (`GET /`):
```sh
# Сервер fzf запущен в режиме "без головы":
fzf --listen 6266 2> /dev/null

# Получение состояния программы:
curl localhost:6266 | jq .

# Увеличение количества возвращаемых элементов (по умолчанию: 100):
curl localhost:6266?limit=1000 | jq .
  • HTTP-сервер можно защитить, установив переменную окружения $FZF_API_KEY.
export FZF_API_KEY="$(head -c 32 /dev/urandom | base64)"

# Сервер:
fzf --listen 6266

# Клиент:
curl localhost:6266 -H "x-api-key: $FZF_API_KEY" -d 'change-query(yo)'
  • Добавлено действие toggle-header.
  • Добавлены события мыши для --bind:
    • scroll-up (связано с up)
    • scroll-down (связано с down)
    • shift-scroll-up (связано с toggle+up)
    • shift-scroll-down (связано с toggle+down)
    • shift-left-click (связано с toggle)
    • shift-right-click (связано с toggle)
    • preview-scroll-up (связано с preview-up)
    • preview-scroll-down (связано с preview-down)
# Вдвое быстрее прокрутка как в основном окне, так и в окне предварительного просмотра:
fzf --bind 'scroll-up:up+up,scroll-down:down+down' \
    --bind 'preview-scroll-up:preview-up+preview-up' \
    --bind 'preview-scroll-down:preview-down+preview-down' \
    --preview 'cat {}'
  • Добавлены действия offset-up и offset-down.
# Прокрутка будет работать аналогично CTRL-E и CTRL-Y в vim:
fzf --bind scroll-up:offset-up,scroll-down:offset-down \
    --bind ctrl-y:offset-up,ctrl-e:offset-down \
    --scroll-off=5
  • Расширения оболочки:
    • Обновлено автозавершение bash для опций fzf.
    • Связки клавиш bash больше не требуют perl; вместо него будет использоваться awk или mawk, если perl не найден.
    • Базовое контекстное автозавершение для команды ssh.
    • Применено --scheme=path для лучшей сортировки результатов.
  • Исправления ошибок и улучшения.0.42.0

  • Добавлен новый стиль информации: --info=right.
  • Добавлен новый стиль информации: --info=inline-right.
  • Добавлен новый стиль границы thinblock, который использует символы для вычислений наследственных систем одна восьмая блочные элементы.
    • Аналогично стилю block, этот стиль подходит при использовании другого цвета фона, так как окно полностью содержится внутри границы.
    BAT_THEME=GitHub fzf --info=right --border=thinblock --preview-window=border-thinblock \
        --margin=3 --scrollbar=▏▕ --preview='bat --color=always --style=numbers {}' \
        --color=light,query:238,fg:238,bg:251,bg+:249,gutter:251,border:248,preview-bg:253
    • Этот стиль может не отображаться правильно в зависимости от шрифта и эмулятора терминала.

0.41.1

  • Исправлена ошибка, при которой окно предварительного просмотра не обновлялось при установке опции --disabled и перезагрузке триггером связки клавиш change:reload.

0.41.0

  • Добавлены цветовые имена preview-border и preview-scrollbar.
  • Добавлен новый стиль границы block, который использует блоковые элементы.
  • Опция --scrollbar может принимать два символа, один для основного окна, другой для окна предварительного просмотра.
  • Объединение всех опций:
fzf-tmux -p 80% --padding 1,2 --preview 'bat --style=plain --color=always {}' \
    --color 'bg:237,bg+:235,gutter:237,border:238,scrollbar:236' \
    --color 'preview-bg:235,preview-border:236,preview-scrollbar:234' \
    --preview-window 'border-block' --border block --scrollbar '▌▐'
  • Исправления ошибок и улучшения.

0.40.0

  • Добавлено событие zero, которое вызывается при отсутствии совпадений.
# Перезагрузить список кандидатов при отсутствии совпадений:
echo $RANDOM | fzf --bind 'zero:reload(echo $RANDOM)+clear-query' --height 3
  • Новые действия:
    • Добавлено действие track, которое заставляет fzf отслеживать текущий элемент при обновлении результата поиска. Если пользователь вручную перемещает курсор или элемент не находится в обновленном результате поиска, отслеживание автоматически отключается. Отслеживание полезно, когда вы хотите видеть окружающие элементы путем удаления строки запроса.
    # Уменьшите список с помощью запроса, укажите команду,
    # и нажмите CTRL-T, чтобы увидеть окружающие команды.
    export FZF_CTRL_R_OPTS="
      --preview 'echo {}' --preview-window up:3:hidden:wrap \
      --bind 'ctrl-/:toggle-preview' \
      --bind 'ctrl-t:track+clear-query' \
      --bind 'ctrl-y:execute-silent(echo -n {2..} | pbcopy)+abort' \
      --color header:italic \
      --header 'Press CTRL-Y to copy command into clipboard'"
    • Добавлено действие change-header(...).
    • Добавлено действие transform-header(...).
    • Добавлено действие toggle-track.
  • Исправление поведения опции --track, когда она используется вместе с опцией --tac.
    • Однако использование опции --track вместе с опцией --tac не рекомендуется. Результирующее поведение может быть очень запутанным.
  • Исправления ошибок и улучшения.

0.39.0

  • Добавлено событие one, которое вызывается при наличии только одного совпадения.
# Автоматически выбрать единственное совпадение:
seq 10 | fzf --bind one:accept
  • Добавлена опция --track, которая заставляет fzf отслеживать текущий выбор при обновлении списка результатов. Это может быть полезно при просмотре логов с помощью fzf без сортировки.
git log --oneline --graph --color=always | nl |
    fzf --ansi --track --no-sort --layout=reverse-list
  • Если вы используете опцию --listen без номера порта, fzf автоматически назначит доступный порт и экспортирует его как переменную окружения $FZF_PORT.
# Автоматическое назначение порта:
fzf --listen --bind 'start:execute-silent:echo $FZF_PORT > /tmp/fzf-port'

# Поздоровайтесь:
curl "localhost:$(cat /tmp/fzf-port)" -d 'preview:echo Hello, fzf is listening on $FZF_PORT.'
  • Символы перевода каретки и новой строки будут отображаться как тусклые ␍ и ␊ соответственно.
printf "foo\rbar\nbaz" | fzf --read0 --preview 'echo {}'
  • Fzf перестанет отображать непоказываемые символы как пробелы. Это вероятно приведет к меньшему количеству артефактов в окне предварительного просмотра.
fzf --preview 'head -1000 /dev/random'
  • Исправления ошибок и улучшения.

0.38.0

  • Новые действия:
    • become(...) — Заменяет текущий процесс fzf указанным командой с использованием системного вызова execve(2). Подробнее см. https://github.com/junegunn/fzf#turning-into-a-different-process.
      
      # Открыть выбранные файлы в Vim:
      fzf —multi —bind ‘enter:become(vim {+})
      
      # Открыть файл в Vim и перейти к строке:
      git grep —line-number . |
          fzf —delimiter : —nth 3.. —bind ‘enter:become(vim {1} +{2})
      
      — Это действие не поддерживается на Windows.
      — Показать предварительный просмотр:
      — Скрыть предварительный просмотр:
      
      — Исправления ошибок:
      — Опция —preview-window hidden должна не выполнять команду предварительного просмотра до тех пор,
      пока не будет вызвано действие toggle-preview.

— Новые события:

— Новое событие focus вызывается при изменении фокуса из-за вертикального перемещения курсора или обновления результата поиска:

```sh

— Новые действия:

— change-border-label:

— change-preview-label:

— transform-border-label:

— transform-preview-label:

— Исправления ошибок и улучшения:

— Улучшена поддержка терминалов (Windows), где каждый символ рисования рамки занимает два столбца.

— Поведение изменений:

— Fzf всегда будет выполнять команду предварительного просмотра,
если шаблон команды содержит {q}, даже если он пустой.

— Если цвет разделителя не указан,
он будет по умолчанию соответствовать цвету границы.

— Если указан флаг follow в опции —preview-window,
fzf будет автоматически прокручивать до конца потока предварительного вывода.

— Стандартный стиль границы на Windows изменен на sharp,
так как некоторые терминалы Windows не могут правильно отображать символы границы rounded.

— Незначительные исправления ошибок и улучшения:

— Исправлена ошибка,
при которой fzf с опцией —tiebreak chunk падал при обратном совпадении запроса.

— Исправлена ошибка,
при которой клик выше fzf приводил к вставке последовательностей эскейпа.

— Добавлено событие start,
которое вызывается только один раз при запуске поисковика fzf.

Поскольку fzf асинхронно потребляет входной поток,
список входных данных недоступен,
если вы не используете —sync.

```sh

— Добавлены —border-label и —border-label-pos для размещения метки на границе:

```sh

— ANSI коды цветов поддерживаются:

(с помощью https://github.com/busyloop/lolcat)

label=$(curl —s http://metaphorpsum.com/sentences/1 | lolcat —f)

— Метка на границе по центру:

fzf —height=10 —border —border-label="╢ $label ╟" —color=label:italic:black

— Левое выравнивание (положительное целое число):

fzf —height=10 —border —border-label="╢ $label ╟" —border-label-pos=3 —color=label:italic:black# Выравнивание по правому краю (отрицательное целое число) в нижней строке (:bottom)
```sh
fzf --height=10 --border --border-label="╢ $label ╟" --border-label-pos=-3:bottom --color=label:italic:black
  • Также добавлены --preview-label и --preview-label-pos для границы окна предварительного просмотра
fzf --preview 'cat {}' --border --preview-label=' Preview ' --preview-label-pos=2
  • Панель информации (счетчик совпадений) будет следовать за горизонтальным разделителем по умолчанию
    • Используйте --no-separator или --separator='', чтобы скрыть разделитель
    • Вы можете указать произвольную строку, которая будет повторяться для формирования горизонтального разделителя. Например, --separator=╸
    • Цвет разделителя можно настроить с помощью --color=separator:...
    • Поддерживаются коды цветов ANSI
fzf --separator=--color=separator:green
fzf --separator=$(lolcat -f -F 1.4 <<< ▁▁▂▃▄▅▆▆▅▄▃▂▁▁) --info=inline
  • Добавлены --border=bold и --border=double вместе с --preview-window=border-bold и --preview-window=border-double

0.34.0

  • Добавлена поддержка адаптивного --height. Если значение --height начинается с ~, fzf автоматически определит высоту в диапазоне в зависимости от размера входных данных.
seq 1 | fzf --height ~70% --border --padding 1 --margin 1
seq 10 | fzf --height ~70% --border --padding 1 --margin 1
seq 100 | fzf --height ~70% --border --padding 1 --margin 1
- Есть несколько ограничений
    - Не совместимо с процентными значениями верхнего/нижнего отступа/заполнения
      ```sh
      # Это не допускается (верхний/нижний отступ в процентах)
      fzf --height ~50% --border --margin 5%,10%

      # Это допускается (верхний/нижний отступ в фиксированном значении)
      fzf --height ~50% --border --margin 2,10%
      ```
    - fzf не запустится, пока не определит правильную высоту для входных данных
      ```sh
      # fzf откроется немедленно
      (sleep 2; seq 10) | fzf --height 50%

      # fzf откроется через 2 секунды
      (sleep 2; seq 10) | fzf --height ~50%
      (sleep 2; seq 1000) | fzf --height ~50%
      ```
  • Исправлен рендерер tcell, используемый для рендеринга полноэкранного fzf на Windows
  • --no-clear устарел. Используйте действие reload вместо этого.

0.33.0

  • Добавлена опция --scheme=[default|path|history] для выбора схемы оценки
    • (Экспериментально)
    • Мы обновили алгоритм оценки в 0.32.0, однако выяснилось, что новая схема (default) не всегда дает оптимальный результат
    • path: Дополнительные бонусные баллы присваиваются только символам после разделителей пути. Вы можете выбрать эту схему, если у вас много файлов с пробелами в их путях.
    • history: Никакие дополнительные бонусные баллы не присваиваются, чтобы придать больше веса хронологическому порядку. Это эквивалентно схеме оценки до 0.32.0. Это также устанавливает --tiebreak=index.
  • Теперь поддерживаются последовательности цветов ANSI с разделителями двоеточия.
printf "\e[38;5;208mOption 1\e[m\nOption 2" | fzf --ansi
printf "\e[38:5:208mOption 1\e[m\nOption 2" | fzf --ansi
  • Поддержка border-{up,down} как синонимов для border-{top,bottom} в --preview-window
  • Добавлена поддержка ANSI strikethrough
printf "\e[9mdeleted" | fzf --ansi
fzf --color fg+:strikethrough

0.32.1

  • Исправлена неправильная сортировка при использовании --tiebreak=chunk
  • fzf-tmux будет показывать границу fzf вместо границы всплывающего окна tmux (требуется tmux 3.3)
fzf-tmux -p70%
fzf-tmux -p70% --color=border:bright-red
fzf-tmux -p100%,60% --color=border:bright-yellow --border=horizontal --padding 1,5 --margin 1,0
fzf-tmux -p70%,100% --color=border:bright-green --border=vertical

# Клавиатурные сочетания (CTRL-T, CTRL-R, ALT-C) будут использовать эти опции
export FZF_TMUX_OPTS='-p100%,60% --color=border:green --border=horizontal --padding 1,5 --margin 1,0'

0.32.0

  • Обновлен алгоритм оценки
    • Разные бонусные баллы для разных категорий границ слов (перечислены от большего к меньшему бонусному баллу)
      • Слово после пробельных символов или начала строки
      • Слово после общих разделителей (/,:;|)
      • Слово после других не-словесных символов
# `foo/bar.sh` предпочтительнее, чем `foo-bar.sh` при поиске `bar`
fzf --query=bar --height=4 << EOF
foo-bar.sh
foo/bar.sh
EOF
  • Добавлено новое действие chunk
    • Предпочитает строку с более коротким совпавшим фрагментом. Фрагмент — это набор последовательных не-пробельных символов.
    • В отличие от стандартного length, эта схема хорошо работает с табличными данными.
# length предпочитает элемент #1, потому что вся строка короче,
# chunk предпочитает элемент #2, потому что совпавший фрагмент ("foo") короче
fzf --height=6 --header-lines=2 --tiebreak=chunk --reverse --query=fo << "EOF"
N | Field1 | Field2 | Field3
- | ------ | ------ | ------
1 | hello  | foobar | baz
2 | world  | foo    | bazbaz
EOF
- Если входные данные не содержат пробелов, `chunk` эквивалентен `length`. Но мы не будем устанавливать его по умолчанию, так как он вычислительно более затратен.
  • Исправления ошибок и улучшения

0.31.0

  • Добавлена поддержка альтернативной компоновки окна предварительного просмотра, которая активируется, когда размер окна предварительного просмотра меньше определенного порога.
# Если ширина окна предварительного просмотра меньше 50 столбцов,
# оно будет отображаться над окном поиска.
fzf --preview 'cat {}' --preview-window 'right,50%,border-left,<50(up,30%,border-bottom)'

# Или вы можете просто скрыть его так:
fzf --preview 'cat {}' --preview-window '<50(hidden)'
  • Теперь fzf использует режим SGR мыши для правильной поддержки мыши на больших терминалах.
  • Теперь вы можете использовать символы, которые не удовлетворяют ограничению unicode.IsGraphic, для --marker, --pointer и --ellipsis. Позволяет использовать Nerd Fonts и т.д. Используйте на свой страх и риск.
  • Исправления ошибок и улучшения.
  • Расширение оболочки:
    • Завершение команды kill теперь требует триггерной последовательности (**) для согласованности.

0.30.0

  • Исправлена мерцание курсора на экране путем скрытия его во время рендеринга.
  • Добавлена опция --ellipsis. Вы можете использовать ее для эффективного поиска невидимых частей элемента.
# Поиск по скрытым номерам строк справа.
nl /usr/share/dict/words                  |
    awk '{printf "%s%1000s\n", $2, $1}'     |
    fzf --nth=-1 --no-hscroll --ellipsis='' |
    awk '{print $2}'
  • Добавлено действие rebind для восстановления связей после использования unbind.
  • Исправления ошибок и улучшения.

0.29.0

  • Добавлено действие change-preview(...) для изменения команды --preview.
    • cf. preview(...) — это одноразовое действие, которое не изменяет стандартную команду предварительного просмотра.
  • Добавлено действие change-preview-window(...).
    • Вы можете переключаться между разными опциями, разделенными символом |.
fzf --preview 'cat {}' --preview-window right:40% \
    --bind 'ctrl-/:change-preview-window(right,70%|down,40%,border-top|hidden|)'
  • Исправлена ошибка рендеринга строки запроса при переполнении с использованием --info=inline.

0.28.0

  • Добавлена опция --header-first для вывода заголовка перед строкой запроса.
fzf --header $'Welcome to fzf\n▔▔▔▔▔▔▔▔▔▔▔▔▔▔' --reverse --height 30% --border --header-first
  • Добавлена опция --scroll-off=LINES (аналогично опции scrolloff в Vim).
    • Вы можете установить ее в очень большое значение, чтобы курсор оставался в середине экрана при прокрутке.
fzf --scroll-off=5
fzf --scroll-off=999
  • Исправлена ошибка, при которой окно предварительного просмотра не обновлялось при выполнении действия reload (#2644).
  • fzf на Windows также будет использовать $SHELL для выполнения внешних программ.
    • См. #2638 и #2647.
    • Благодарим @rashil2000, @vovcacik и @janlazo.

0.27.3

  • Окно предварительного просмотра по умолчанию скрыто (hidden), если есть привязки к предварительному просмотру, но не указана команда --preview.
  • Исправлена ошибка, при которой {n} не правильно сбрасывалось при выполнении действия reload.
  • Исправлена ошибка, при которой индикатор загрузки не отображался при выполнении действия reload.
  • Улучшения в рендерере tcell для Windows (#2616).
  • Vim плагин:
    • Добавлено sinklist как синоним для sink*, чтобы было проще добавить функцию к словарю спецификации.
let spec = { 'source': 'ls', 'options': ['--multi', '--preview', 'cat {}'] }
function spec.sinklist(matches)
    echom string(a:matches)
endfunction

call fzf#run(fzf#wrap(spec))
- Совместимость с Vim 7.

0.27.2

  • Цвета ANSI можно указывать по их именам.
fzf --color fg:3,fg+:11
fzf --color fg:yellow,fg+:bright-yellow
  • Исправлена ошибка, при которой --read0 некорректно отображал длинные строки.

0.27.1

  • Добавлено действие unbind. В следующем примере запуска Ripgrep вы можете использовать unbind(reload), чтобы переключиться в режим фильтрации только через fzf.
  • Vim плагин:
    • Vim плагин немедленно завершится даже если команда источника еще не завершилась.
" fzf будет читать потоковый файл, позволяя другим процессам дописывать в него.
call fzf#run({'source': 'cat /dev/null > /tmp/stream; tail -f /tmp/stream'})
- Теперь можно открывать всплывающее окно относительно текущего окна.
let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6, 'relative': v:true, 'yoffset': 1.0 } }

0.27.0

  • Больше опций границы для --preview-window.
fzf --preview 'cat {}' --preview-window border-left
fzf --preview 'cat {}' --preview-window border-left --border horizontal
fzf --preview 'cat {}' --preview-window top:border-bottom
fzf --preview 'cat {}' --preview-window top:border-horizontal
  • Автоматически устанавливается /dev/tty как STDIN при выполнении действия.
# Перенаправление /dev/tty для подавления "Vim: Warning: Input is not from a terminal"
# ls | fzf --bind "enter:execute(vim {} < /dev/tty)"

# Часть "< /dev/tty" больше не нужна.
ls | fzf --bind "enter:execute(vim {})"
  • Исправления ошибок и улучшения.
  • Подписанные и нотариализованные бинарные файлы macOS. (Huge thanks to BACKERS.md!)

0.26.0

  • Добавлена поддержка фиксированного заголовка в окне предварительного просмотра.
# Отображение первых трех строк как фиксированного заголовка.
fzf --preview 'bat --style=header,grid --color=always {}' --preview-window '~3'
  • Более продвинутое выражение смещения предварительного просмотра для лучшей поддержки фиксированного заголовка.
# Предварительный просмотр с bat, совпадающая строка посередине окна ниже фиксированного заголовка из первых трех строк.
#
#   ~3    Первые три строки как фиксированный заголовок.
#   +{2}  Базовое смещение прокрутки извлекается из второго поля.
#   +3    Дополнительное смещение для компенсации трехстрочного заголовка.
#   /2    Размещение посередине области предварительного просмотра.
#
git grep --line-number '' |
    fzf --delimiter : \
        --preview 'bat --style=full --color=always --highlight-line {2} {1}' \
        --preview-window '~3:+{2}+3/2'
  • Добавлены действия select и deselect для безусловного выбора или отмены выбора одного элемента в режиме --multi. Дополняют действие toggle.
  • Значительное улучшение производительности обработки кодов ANSI.
  • Исправления ошибок и улучшения.
  • Сборка с Go 1.16.

0.25.1

  • Добавлено действие close.
    • Закрывает окно предварительного просмотра, если оно открыто; завершает fzf в противном случае.
  • Исправления ошибок и улучшения.

0.25.0

  • Атрибуты текста, установленные в --color, не сбрасываются при обнаружении другого параметра --color для того же элемента. Это позволяет указывать пользовательские атрибуты текста в вашем $FZF_DEFAULT_OPTS, и они все равно будут применяться даже при переопределении цветов.
# Стандартные цвета и атрибуты.
fzf

# Применение пользовательских атрибутов текста.
export FZF_DEFAULT_OPTS='--color fg+:italic,hl:-1:underline,hl+:-1:reverse:underline'

fzf

# Разные цвета, но атрибуты все еще сохраняются.
fzf --color hl:176,hl+:177

# Напишите "regular", чтобы очистить атрибуты.
fzf --color hl:176:regular,hl+:177:regular
  • Переименовано --phony в --disabled.
  • Теперь можно динамически включать и выключать функциональность поиска с помощью новых действий enable-search, disable-search и toggle-search.
  • Можно назначить другой цвет строке запроса при выключенном поиске.
fzf --color query:#ffffff,disabled:#999999 --bind space:toggle-search
  • Добавлено действие last для перемещения курсора к последнему совпадению.
    • Противоположное действие top переименовано в first, но top все еще распознается как синоним для обратной совместимости.
  • Добавлены действия preview-top и preview-bottom.
  • Расширена поддержка комбинаций клавиш alt: alt с любым регистрозависимым одиночным символом.
fzf --bind alt-,first,alt-.last0.24.4
------
- Добавлена опция окна предварительного просмотра `follow`.
```sh
# Окно предварительного просмотра автоматически прокручивается к концу.
fzf --preview-window follow --preview 'for i in $(seq 100000); do
    echo "$i"
    sleep 0.01
    (( i % 300 == 0 )) && printf "\033[2J"
done'
  • Добавлено действие change-prompt.
fzf --prompt 'foo> ' --bind $'a:change-prompt:\x1b[31mbar> '
  • Исправления ошибок и улучшения.

0.24.3

  • Добавлена опция --padding.
fzf --margin 5% --padding 5% --border --preview 'cat {}' \
    --color bg:#222222,preview-bg:#333333

0.24.2

  • Исправления ошибок и улучшения.

0.24.1

  • Исправлена сломанная опция --color=[bw|no].

0.24.0

  • Реальное время рендеринг окна предварительного просмотра.
# fzf может рендерить окно предварительного просмотра до завершения команды.
fzf --preview 'sleep 1; for i in $(seq 100); do echo $i; sleep 0.01; done'

# Окно предварительного просмотра может обрабатывать последовательность ANSI (CSI 2 J) для очистки экрана.
fzf --preview 'for i in $(seq 100000); do
    (( i % 200 == 0 )) && printf "\033[2J"
    echo "$i"
    sleep 0.01
done'
  • Обновление опции --color для поддержки стилей текста:
    • regular / bold / dim / underline / italic / reverse / blink
# * Установите -1 для сохранения исходного цвета.
# * Множественные атрибуты стиля могут быть объединены.
# * Стиль italic может не поддерживаться некоторыми терминалами.
rg --line-number --no-heading --color=always "" |
      fzf --ansi --prompt "Rg: " \
          --color fg+:italic,hl:underline:-1,hl+:italic:underline:reverse:-1 \
          --color pointer:reverse,prompt:reverse,input:159 \
          --pointer '  '
  • Больше опций границы:
    • vertical, top, bottom, left, right
    • Обновлен Vim плагин для использования новых опций границы:
" Всплывающее окно по центру экрана.
let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6 } }

" Всплывающее окно шириной на весь экран.
let g:fzf_layout = { 'window': { 'width': 1.0, 'height': 0.5, 'border': 'horizontal' } }

" Всплывающее окно высотой на весь экран.
let g:fzf_layout = { 'window': { 'width': 0.5, 'height': 1.0, 'border': 'vertical' } }

" Аналогично макету 'down', но использует всплывающее окно и не влияет на макет окон.
let g:fzf_layout = { 'window': { 'width': 1.0, 'height': 0.5, 'yoffset': 1.0, 'border': 'top' } }

" Открывается справа;
"   Опция 'highlight' все еще поддерживается, но принимает только цвет фона группы.
let g:fzf_layout = { 'window': { 'width': 0.5, 'height': 1.0, 'xoffset': 1.0, 'border': 'left', 'highlight': 'Comment' } }
  • Для указания включен ли режим --multi, fzf будет выводить количество выбранных элементов даже если ни один элемент не выбран:
seq 100 | fzf
    # 100/100

seq 100 | fzf --multi
    # 100/100 (0)

seq 100 | fzf --multi 5
    # 100/100 (0/5)

0.23.1

  • Добавлены опции окна предварительного просмотра для отключения флагов:
    • nocycle
    • nohidden
    • nowrap
    • default
  • Сборка с Go 1.14.9 из-за регрессии производительности:

0.23.0

  • Поддержка относительного смещения прокрутки предварительного просмотра относительно высоты окна:
git grep --line-number '' |
    fzf --delimiter : \
        --preview 'bat --style=numbers --color=always --highlight-line {2} {1}' \
        --preview-window +{2}-/2
  • Добавлена опция окна предварительного просмотра для острых углов (--preview-window sharp)
  • Добавлена опция окна предварительного просмотра для циклической прокрутки (--preview-window cycle)
  • Уменьшено вертикальное заполнение вокруг окна предварительного просмотра при использовании опции --preview-window noborder
  • Добавлены действия для окна предварительного просмотра:
    • preview-half-page-up
    • preview-half-page-down
  • Vim:
    • Ширина и высота всплывающего окна могут быть указаны абсолютными целыми числами.
    • Добавлена функция fzf#exec() для получения пути к исполняемому файлу fzf:
      • Она также загружает последний бинарный файл при его отсутствии путем выполнения команды:
        ./install –bin 
  • Сборка с Go 1.15.2:
    • Мы больше не предоставляем бинарные файлы для архитектур x86.

... (продолжение перевода)0.16.5

  • Исправлены незначительные ошибки
  • Добавлена действие toggle-preview-wrap
  • Собрано с Go 1.8

0.16.4

  • Добавлена опция --border для отображения границы над и под поиском
  • Исправления ошибок и улучшения

0.16.3

  • Исправлена ошибка, при которой fzf некорректно отображал строки, когда символы табуляции обрезались
  • Заполнитель, используемый в действиях --preview и execute, может необязательно принимать флаг + для использования с несколькими выборками
    • Например: git log --oneline | fzf --multi --preview 'git show {+1}'
  • Добавлено действие execute-silent для выполнения команды в фоновом режиме без переключения на альтернативный экран. Это полезно, когда процесс короткий и вы не заинтересованы в его выводе.
    • Например: fzf --bind 'ctrl-y:execute!(echo -n {} | pbcopy)'
  • Разрешено использование ctrl-space в --bind

0.16.2

  • Удалена зависимость от ncurses
  • Бинарные файлы для freebsd, openbsd, arm5, arm6, arm7 и arm8
  • Официальная поддержка 24-битного цвета
  • Добавлена поддержка составных действий в --bind. Множественные действия могут быть объединены с использованием разделителя +.
    • Например: fzf --bind 'ctrl-y:execute(echo -n {} | pbcopy)+abort'
  • Разрешено использование --preview-window с размером 0. Это используется для выполнения команды предварительного просмотра в фоновом режиме без отображения результата.
  • Незначительные исправления ошибок и улучшения

0.16.1

  • Исправлена опция --height для правильного заполнения окна фоновым цветом
  • Добавлены действия half-page-up и half-page-down
  • Добавлен флаг -L к команде поиска по умолчанию

0.16.0

  • Добавлена опция --height HEIGHT[%]
    • Теперь fzf может отображать поиск без захвата всего экрана
  • Окно предварительного просмотра будет обрезать длинные строки по умолчанию. Обертывание строк можно включить с помощью флага :wrap в --preview-window.
  • Латинские буквы будут нормализованы перед сопоставлением, чтобы легче было сопоставлять буквы с диакритическими знаками. Например, sodanco может сопоставляться с Só Danço Samba.
    • Нормализация может быть отключена с помощью --literal
  • Добавлена опция --filepath-word, чтобы движения и действия по словам (alt-b, alt-f, alt-bs, alt-d) учитывали разделители пути

0.15.9

  • Исправлены проблемы с отображением, возникшие в 0.15.8
  • Время задержки по умолчанию уменьшено до 50 мс и может быть настроено через $ESCDELAY
  • Индикатор прокрутки в верхнем правом углу окна предварительного просмотра всегда отображается при наличии переполнения
  • Теперь можно собирать с ncurses 6 или tcell для поддержки дополнительных функций

0.15.8

  • Обновлен процессор ANSI для обработки большего количества последовательностей экранирования VT-100
  • Добавлена опция --no-bold--bold)
  • Улучшена обработка последовательностей экранирования для WSL
  • Добавлена поддержка alt-[0-9], f11 и f12 для --bind и --expect

0.15.7

  • Исправлена паника, возникающая при отключении цвета и наличии ANSI цветов в заголовочных строках

0.15.6

  • Бинарные файлы для Windows! (@kelleyma49)
  • Исправлена ошибка, при которой заголовочные строки очищались при переключении окна предварительного просмотра
  • Исправлена неотображаемость символов ^N и ^O на экране
  • Исправлена обработка клавиш курсора (или любой последовательности клавиш, начинающейся с ESC) в WSL, заставляя fzf ждать дополнительные нажатия после ESC в течение до 100 мс

0.15.5

  • Установка цвета переднего плана больше не устанавливает цвет фона в черный
    • Например: fzf --color fg:153
  • Опция --tiebreak=end будет учитывать относительное положение вместо абсолютного расстояния
  • Обновлена функция fzf#wrap для учета g:fzf_colors

0.15.4

  • Добавлена поддержка диапазонных выражений в предварительном просмотре и действии выполнения
    • Например: ls -l | fzf --preview="echo user={3} when={-4..-2}; cat {-1}" --header-lines=1
    • {q} будет заменено на одинарно закавыченную строку текущего запроса
  • Исправлена правильная обработка символов пробела Unicode
  • Отображение индикатора прокрутки в окне предварительного просмотра
  • Обратный поиск будет использовать точное сопоставление по умолчанию
    • Это изменение является разрывным, но, как мне кажется, это имеет гораздо больше смысла. Почти невозможно предсказать, какие записи будут отфильтрованы из-за нечеткого обратного термина. Вы все еще можете выполнять обратное нечеткое сопоставление, добавив !' к термину.

0.15.3

  • Добавлена поддержка дополнительных атрибутов ANSI: dim, underline, blink и reverse
  • Исправлена гонка в toggle-preview

0.15.2

  • Окно предварительного просмотра теперь прокручивается
    • С помощью прокрутки мыши или привязанных действий
      • preview-up
      • preview-down
      • preview-page-up
      • preview-page-down
  • Обновлен процессор ANSI для поддержки цветов высокой интенсивности и игнорирования некоторых последовательностей экранирования VT100

0.15.1

  • Исправлена паника, возникающая при появлении шаблона после 2^15 столбца
  • Исправлена задержка отображения при отображении очень длинных строк

0.15.0

  • Улучшен алгоритм нечеткого поиска
    • Добавлена опция --algo=[v1|v2], чтобы можно было выбрать старый алгоритм, который придает значение производительности поиска над качеством результата
  • Расширенные критерии оценки
  • Опция --read0 для чтения входных данных, разделенных символом ASCII NUL
  • Опция --print0 для вывода результата, разделенного символом ASCII NUL

0.13.5

  • Оптимизация памяти и производительности
    • До 2 раз быстрее с половиной объема памяти

0.13.4

  • Оптимизация производительности
    • Объем памяти для строк ASCII уменьшен на 60%
    • Улучшение производительности запросов на 15–20%
    • До 45% лучшая производительность --nth с разделителями, не являющимися регулярными выражениями
  • Исправлена некорректная обработка свойства hidden опции --preview-window

0.13.3

  • Исправлена дублированная отрисовка последней строки в окне предварительного просмотра

0.13.2

  • Исправлена гонка, при которой окно предварительного просмотра не очищалось правильно

0.13.1

  • Исправлены проблемы пользовательского интерфейса при большом выходе --preview с большим количеством кодов ANSI

0.13.0

  • Добавлена функция предварительного просмотра
    • --preview CMD
    • --preview-window POS[:SIZE][:hidden]
  • {} в действии выполнения теперь заменяется на одинарно закавыченную (вместо двойной) строку текущей строки
  • Исправлено игнорирование управляющих символов для режима вставки в скобках

0.12.2

  • Обнаружение возможности использования 256 цветов не требует наличия 256 в $TERM
  • Добавлено действие print-query
  • Больше именованных клавиш для привязки; F1 ~ F10, ALT-/, ALT-space и ALT-enter
  • Добавлены действия jump и jump-accept, реализующие движение EasyMotion-подобное движение

0.12.1

  • Алгоритм ранжирования, представленный в 0.12.0, теперь применяется повсеместно
  • Исправлена некорректная ссылка на кэш в режиме точного поиска
  • Исправления и улучшения в плагине Vim и расширениях оболочки

0.12.0

  • Улучшен алгоритм ранжирования
  • Незначительные исправления ошибок

0.11.4

  • Добавлена опция --hscroll-off=COL (по умолчанию: 10) (#513)
  • Некоторые исправления в плагине Vim и расширениях оболочки

0.11.3

  • Грациозный выход при получении SIGTERM (#482)
  • $SHELL вместо sh для действия выполнения и $FZF_DEFAULT_COMMAND (#481)
  • Изменения в API нечеткого завершения команды

0.11.2

  • Опция --tiebreak теперь принимает список критериев сепаратором запятая
    • Каждый критерий должен появляться только один раз в списке
    • Критерий index допускается только в конце списка
    • Критерий index неявно добавляется к списку, если он не указан
    • По умолчанию используется критерий length (или эквивалентно length,index)
  • Критерий begin будет игнорировать начальные пробелы при расчете индекса
  • Добавлены действия toggle-in и toggle-out
    • Переключение направления в зависимости от режима -reverse
    • Например: export FZF_DEFAULT_OPTS="--bind tab:toggle-out,shift-tab:toggle-in"
  • Уменьшено начальное задержка при отсутствии опции --tac
    • fzf откладывает начальную отрисовку экрана до 100 мс, если поток входных данных продолжается, чтобы предотвратить ненужную перерисовку на начальной стадии. Однако задержка 100 мс заметна и может создать впечатление, что fzf недостаточно быстрый. Этот коммит уменьшает максимальную задержку до 20 мс при отсутствии опции --tac, когда список входных данных быстро заполняет весь экран.

0.11.1

  • Добавлена опция --tabstop=SPACES

0.11.0

  • Добавлен оператор OR для расширенного режима поиска
  • Добавлено действие --execute-multi
  • Исправлена некорректная позиция курсора при использовании символов Unicode широкой кодировки в опции -prompt
  • Исправления и улучшения в расширениях оболочки

0.10.9

  • Расширенный режим поиска теперь включен по умолчанию
    • Опция --extended-exact устарела, вместо этого есть опция --exact для ортогонального управления "точностью" поиска
  • Исправлена некорректная отображение непечатаемых символов
  • Добавлено действие двойного щелчка для опции -bind
  • Более надежная обработка SIGWINCH

0.10.8

  • Исправлена паника при попытке установить цвета после отключения цветов (#370)

0.10.7

  • Исправлена несинхронизированная обработка прерываний во время выполнения действия, что часто вызывало некорректный доступ к памяти и аварийное завершение работы программы
  • Изменено поведение опции -tiebreak=length (по умолчанию) на использование обрезанной длины при использовании -nth

0.10.6

  • Заменена опция -header-file на опцию -header
  • Опции -header и -header-lines могут использоваться вместе
  • Изменен код выхода:
    • 0: Успешно
    • 1: Нет совпадений
    • 2: Ошибка
    • 130: Прервано пользователем
  • 64-bit бинарный файл Linux статически связан с ncurses для избежания проблем совместимости.

0.10.5

  • Префикс ' для отмены кавычек термина в режиме -extended-exact
  • Обратный скан при установленной опции -tiebreak=end

0.10.4

  • Исправлена удаление кодов ANSI из выходных данных при установленной опции -with-nth

0.10.3

  • Исправлена медленная производительность -with-nth при использовании с -delimiter
    • Регулярное выражение Go на данный момент очень медленное, поэтому исправленная версия будет рассматривать заданный шаблон разделителя как простую строку вместо регулярного выражения, если он не содержит специальных символов и является допустимым регулярным выражением.
    • Более простое регулярное выражение для разделителя для лучшей производительности

0.10.2

Исправления и улучшения

  • Улучшение восприятия времени ответа на запросы:
    • Эффективное преобразование массива рунов в массив символов (rune array conversion)
  • Грациозный выход при неудачной инициализации ncurses (неверный $TERM)
  • Улучшен алгоритм ранжирования при использовании опции -nth
  • Изменен стандартный командный файл так, чтобы он не завершался ошибкой при наличии файлов с именами, начинающимися на дефис

0.10.1

Новые функции

  • Добавлена опция -margin
  • Добавлены опции для "липкого" заголовка:
    • -header-file
    • -header-lines
  • Добавлено действие cancel, которое очищает вход или закрывает поиск, если вход уже пуст:
    • Например: export FZF_DEFAULT_OPTS="--bind esc:cancel"
  • Добавлено действие delete-char/eof для различия между CTRL-D и DEL

Незначительные улучшения/исправления

  • Разрешено привязывать клавиши двоеточие и запятая ключи к действиям -bind, -toggle-sort и -expect
  • Исправлен процессор ANSI для обработки цветовых областей, охватывающих несколько строк

0.10.0

Новые функции

  • Больше действий для -bind
    • select-all
    • deselect-all
    • toggle-all
    • ignore
  • Действие execute(...) для выполнения произвольной команды без выхода из fzf:
    • Например: fzf --bind "ctrl-m:execute(less {})"
    • Например: fzf --bind "ctrl-t:execute(tmux new-window -d 'vim {}')"
    • Если команда содержит скобки, используйте одну из следующих альтернативных записей, чтобы избежать ошибок разбора:
      • execute[...]
      • execute~...~
      • execute!...!
      • execute@...@
      • execute#...#
      • execute$...$
      • execute%...%
      • execute^...^
      • execute&...&
      • execute*...*
      • execute;...;
      • execute/.../
      • execute|...|
      • execute:...
        • Это особая форма записи, которая освобождает вас от ошибок разбора, так как она не требует закрывающего символа.
        • Ограничение заключается в том, что она должна быть последней в списке, разделенном запятыми.
  • Добавлена поддержка необязательной истории поиска:
    • -history HISTORY_FILE
      • При использовании автоматически переназначаются клавиши CTRL-N и CTRL-P на next-history и previous-history.
    • -history-size MAX_ENTRIES (по умолчанию: 1000)
  • Циклическая прокрутка может быть включена с помощью -cycle
  • Исправлена ошибка, при которой индикатор загрузки не крутился при пустом входном потоке:
    • Например: sleep 10 | fzf

Незначительные улучшения/исправления

  • Добавлены синонимы для названий клавиш, которые можно указывать для -bind, -toggle-sort и -expect
  • Исправлен цвет маркера многострочного выбора на текущей строке.
  • Разрешено использование ^pattern$ в расширенном режиме поиска.

0.9.13

Новые функции

  • Настройка цветовой схемы с расширенной опцией -color

Исправления ошибок

  • Исправлена преждевременная остановка Reader при наличии длинной строки длиной более 64KB.

0.9.12

Новые функции

  • Добавлена опция -bind для пользовательских привязок клавиш.

Исправления ошибок

  • Исправлено немедленное обновление "inline-info" после изменения размера терминала.
  • Исправлен расчет смещения кодов ANSI.0.9.11

Новые функции

  • Добавлена опция -inline-info для экономии места на экране (#202)
    • Полезно внутри Neovim.
    • Например: let $FZF_DEFAULT_OPTS = $FZF_DEFAULT_OPTS.' --inline-info'

Исправления ошибок

  • Некорректное изменение входных данных при преобразовании регистра (#209)
  • Умный регистр для каждого термина в расширенном режиме поиска (#208)
  • Исправлен результат двойного щелчка при положительном смещении прокрутки.

0.9.10

Улучшения

  • Оптимизация производительности.
  • Менее агрессивная мемоизация для ограничения использования памяти.

Новые функции

  • Добавлена цветовая схема для светлого фона: -color=light.

0.9.9

Новые функции

  • Добавлена опция -tiebreak (#191).
  • Добавлена опция -no-hscroll (#193).
  • Визуальное указание на использование -toggle-sort (#194).

Исправления ошибок

Улучшения

Новые функции

Исправления ошибок

Улучшения

Новые функции

Исправления ошибок

Улучшения

Новые функции

Исправления ошибок

Улучшения

Новые функции

Исправления ошибок

Улучшения

Новые функции

Исправления ошибок

Улучшения

Новые функции

Исправления ошибок

Улучшения

Новые функции

Исправления ошибок

Улучшения

Новые функции

Исправления ошибок

Улучшения

Новые функции

Исправления ошибок

Улучшения

Новые функции

Исправления ошибок

Улучшения

Новые функции

Исправления ошибок

Улучшения

Новые функции

Исправления ошибок

Улучшения

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-fzf.git
git@api.gitlife.ru:oschina-mirror/mirrors-fzf.git
oschina-mirror
mirrors-fzf
mirrors-fzf
master