Ищу со-сопровождающих : сейчас у меня мало времени на поддержку этого проекта. Если кто-то захочет присоединиться и стать со-сопровождающим, мы будем признательны!
McFly заменяет поиск по истории оболочки ctrl-r
по умолчанию на интеллектуальную поисковую систему, которая учитывает ваш рабочий каталог и контекст недавно выполненных команд. Предложения McFly расставляются по приоритетам в режиме реального времени с помощью небольшой нейронной сети.
TL;DR: обновленный ctrl-r
, благодаря которому результаты истории имеют смысл для того, над чем вы сейчас работаете.
ctrl-r
для вызова полноэкранного поиска по обратной истории с приоритетом небольшой нейронной сети.%
, чтобы соответствовать любому количеству символов при поиске. Ключевой особенностью McFly является интеллектуальная приоритезация команд, основанная на небольшой нейронной сети, работающей в режиме реального времени. Цель состоит в том, чтобы команда, которую вы хотите запустить, всегда была одной из лучших предложений.
Предлагая команду, МакФлай учитывает:
Установите mcfly
:
brew install mcfly
Добавьте следующее в конец файла ~/.bashrc
, ~/.zshrc
или ~/.config/fish/config.fish
:
Баш:
eval " $( mcfly init bash ) "
Зш:
eval " $( mcfly init zsh ) "
Рыба:
mcfly init fish | source
Бегать . ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
или перезапустите эмулятор терминала.
mcfly
: brew uninstall mcfly
~/.bashrc
/ ~/.zshrc
/ ~/.config/fish/config.fish
.Обновите дерево портов
sudo port selfupdate
Установите mcfly
:
sudo port install mcfly
Добавьте следующее в конец вашего файла ~/.bashrc
, ~/.zshrc
или ~/.config/fish/config.fish
соответственно:
Баш:
eval " $( mcfly init bash ) "
Зш:
eval " $( mcfly init zsh ) "
Рыба:
mcfly init fish | source
Бегать . ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
или перезапустите эмулятор терминала.
mcfly
: sudo port uninstall mcfly
~/.bashrc
/ ~/.zshrc
/ ~/.config/fish/config.fish
. curl -LSfs https://raw.githubusercontent.com/cantino/mcfly/master/ci/install.sh | sh -s -- --git cantino/mcfly
(или, если у текущего пользователя нет прав на редактирование /usr/local/bin, используйте sudo sh -s
.)
Добавьте следующее в конец файла ~/.bashrc
, ~/.zshrc
или ~/.config/fish/config.fish
соответственно:
Баш:
eval " $( mcfly init bash ) "
Зш:
eval " $( mcfly init zsh ) "
Рыба:
mcfly init fish | source
Бегать . ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
или перезапустите эмулятор терминала.
Загрузите последнюю версию с GitHub.
Установите в папку $PATH
. (Например, вы можете создать каталог ~/bin
, скопировать mcfly
в это место и добавить export PATH="$PATH:$HOME/bin"
в ваш .bashrc
/ .zshrc
или запустить set -Ua fish_user_paths "$HOME/bin"
для рыбы.)
Добавьте следующее в конец вашего ~/.bashrc
, ~/.zshrc
или ~/.config/fish/config.fish
соответственно:
Баш:
eval " $( mcfly init bash ) "
Зш:
eval " $( mcfly init zsh ) "
Рыба:
mcfly init fish | source
Бегать . ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
или перезапустите эмулятор терминала.
Установите Rust 1.40 или новее.
Запустите git clone https://github.com/cantino/mcfly
и cd mcfly
Запустите cargo install --path .
Убедитесь, что ~/.cargo/bin
находится в вашем $PATH
.
Добавьте следующее в конец ~/.bashrc
, ~/.zshrc
, ~/.config/fish/config.fish
или powershell $PROFILE
соответственно:
Баш:
eval " $( mcfly init bash ) "
Зш:
eval " $( mcfly init zsh ) "
Рыба:
mcfly init fish | source
Ядро Powershell (pwsh)
Invoke-Expression - Command $ (mcfly init powershell | out-string )
Бегать . ~/.bashrc
/ . ~/.zshrc
/ source ~/.config/fish/config.fish
/ . $PROFILE
или перезапустите эмулятор терминала.
Добавьте приведенный ниже код в ваш zshrc.
zinit ice lucid wait " 0a " from " gh-r " as " program " atload ' eval "$(mcfly init zsh)" '
zinit light cantino/mcfly
Он загрузит и установит mcfly.
$(mcfly init zsh)
будет выполнен после запроса
Чтобы пользовательский интерфейс McFly не испортил историю прокрутки в iTerm2, убедитесь, что этот параметр снят:
McFly может выгрузить историю команд в стандартный вывод .
Например:
mcfly dump --since ' 2023-01-01 ' --before ' 2023-09-12 09:15:30 '
выгрузит команду, выполненную с 01.01.2023 00:00:00.0 по 12.09.2023 09:15:30 ( эксклюзивно ) в формате json . Вы также можете указать csv в качестве формата дампа с помощью --format csv
.
Каждый элемент в дамп-команде имеет следующие поля:
cmd
: команда запуска.when_run
: время выполнения команды в вашем местном часовом поясе.Вы можете сбросить всю историю команд без каких-либо аргументов:
mcfly dump
McFly анализирует временные метки через chrono-systemd-time
, нестрогую реализацию systemd.time, со следующими исключениями:
Пользователям McFly просто необходимо понимать , что указание часового пояса в метке времени запрещено . McFly всегда будет использовать ваш местный часовой пояс .
Для получения более подробной информации обратитесь к документации chrono-systemd-time
.
Дамп поддерживает команды фильтрации с помощью регулярных выражений. Синтаксис регулярного выражения соответствует регулярному выражению crate.
Например:
mcfly dump -r ' ^cargo run '
сбросит все префиксы команд с помощью cargo run
.
Вы можете использовать -r/--regex
и параметры времени одновременно.
Например:
mcfly dump -r ' ^cargo run ' --since ' 2023-09-12 09:15:30 '
выгрузит все префиксы команд с cargo run
, запущенным с 12 сентября 2023 г., 09:15:30 .
Ряд настроек можно установить через переменные среды. Чтобы установить настройку, вам следует добавить следующие фрагменты в ваш ~/.bashrc
/ ~/.zshrc
/ ~/.config/fish/config.fish
.
Чтобы поменять цветовую схему для использования в световом терминале, установите переменную среды MCFLY_LIGHT
.
баш/зш:
export MCFLY_LIGHT=TRUE
рыба:
set -gx MCFLY_LIGHT TRUE
силовая оболочка:
$ env: MCFLY_LIGHT = " TRUE "
Совет: в macOS вы можете использовать следующий фрагмент для настройки цветовой схемы на основе общесистемных настроек:
баш/зш:
if [[ " $( defaults read -g AppleInterfaceStyle 2 & > /dev/null ) " != " Dark " ]] ; then
export MCFLY_LIGHT=TRUE
fi
По умолчанию Mcfly использует схему ключей, основанную на emacs
. Если вы хотите переключиться на схему ключей, основанную на vim
, установите переменную среды MCFLY_KEY_SCHEME
.
баш/зш:
export MCFLY_KEY_SCHEME=vim
рыба:
set -gx MCFLY_KEY_SCHEME vim
силовая оболочка:
$ env: MCFLY_KEY_SCHEME = " vim "
Чтобы включить нечеткий поиск, задайте для MCFLY_FUZZY
целое число. 0 выключен; более высокие числа имеют вес в пользу более коротких совпадений. Значения в диапазоне 2–5 пока дают хорошие результаты; попробуйте несколько и сообщите, что подойдет вам лучше всего!
баш/зш:
export MCFLY_FUZZY=2
рыба:
set -gx MCFLY_FUZZY 2
силовая оболочка:
$ env: MCFLY_FUZZY = 2
Чтобы изменить максимальное количество отображаемых результатов, установите MCFLY_RESULTS
(по умолчанию: 10).
баш/зш:
export MCFLY_RESULTS=50
рыба:
set -gx MCFLY_RESULTS 50
силовая оболочка:
$ env: MCFLY_RESULTS = 50
Чтобы удалить без подтверждения, установите для MCFLY_DELETE_WITHOUT_CONFIRM
значение true.
баш/зш:
export MCFLY_DELETE_WITHOUT_CONFIRM=true
рыба:
set -gx MCFLY_DELETE_WITHOUT_CONFIRM true
силовая оболочка:
$ env: MCFLY_DELETE_WITHOUT_CONFIRM = " true "
Чтобы изменить вид интерфейса, установите MCFLY_INTERFACE_VIEW
(по умолчанию: TOP
). Доступные варианты: TOP
и BOTTOM
баш/зш:
export MCFLY_INTERFACE_VIEW=BOTTOM
рыба:
set -gx MCFLY_INTERFACE_VIEW BOTTOM
силовая оболочка:
$ env: MCFLY_INTERFACE_VIEW = " BOTTOM "
Чтобы отключить интерфейс меню, установите переменную среды MCFLY_DISABLE_MENU
.
баш/зш:
export MCFLY_DISABLE_MENU=TRUE
рыба:
set -gx MCFLY_DISABLE_MENU TRUE
силовая оболочка:
$ env: MCFLY_DISABLE_MENU = true
Чтобы изменить сортировку отображаемых результатов, установите MCFLY_RESULTS_SORT
(по умолчанию: RANK). Возможные значения RANK
и LAST_RUN
баш/зш:
export MCFLY_RESULTS_SORT=LAST_RUN
рыба:
set -gx MCFLY_RESULTS_SORT LAST_RUN
силовая оболочка:
$ env: MCFLY_RESULTS_SORT = " LAST_RUN "
Чтобы изменить приглашение, установите MCFLY_PROMPT
(по умолчанию: $
).
баш/зш:
export MCFLY_PROMPT= " ❯ "
рыба:
set -gx MCFLY_PROMPT " ❯ "
силовая оболочка:
$ env: MCFLY_PROMPT = " > "
Обратите внимание, что разрешены только односимвольные запросы. установка для MCFLY_PROMPT
значения "<str>"
приведет к сбросу его к приглашению по умолчанию.
McFly хранит свою базу данных SQLite в стандартном для ОС месте. В OS X это ~/Library/Application Support/McFly
, в Linux — $XDG_DATA_DIR/mcfly/history.db
(по умолчанию ~/.local/share/mcfly/history.db
), а в Windows , это %LOCALAPPDATA%McFlydatahistory.db
. Для поддержки устаревших версий, если существует ~/.mcfly/
, вместо него используется он.
Если у вас очень большая база данных истории и вы заметили, что McFly запускается медленно, вы можете установить MCFLY_HISTORY_LIMIT
примерно на 10 000, чтобы ограничить количество записей, учитываемых при поиске. В этом примере McFly будет искать только последние 10 000 записей.
Начиная с версии ядра Linux 6.2, в некоторых системах отключена функция TIOCSTI (которая ранее использовалась McFly для записи выбранной команды). McFly решает эту проблему, используя две «фиктивные» комбинации клавиш, которые по умолчанию — ctrl-x 1
и ctrl-x 2
. Если вы используете любой из них для другой цели, вы можете установить MCFLY_BASH_SEARCH_KEYBINDING
и MCFLY_BASH_ACCEPT_LINE_KEYBINDING
соответственно на то, что вы не используете. Если вы предпочитаете использовать устаревшее поведение TIOCSTI, вы можете включить его, установив для переменной sysctl
dev.tty.legacy_tiocsti
значение 1
в вашей системе и задав для переменной bash MCFLY_BASH_USE_TIOCSTI
значение 1
.
McFly в настоящее время не анализирует и не использует HISTTIMEFORMAT
.
Вклады и исправления ошибок приветствуются! Однако мы не можем объединять PR, которые значительно усложняют задачу, превышающую ту, которая уже необходима для поддержки проекта. Если у вас есть сомнения, не стесняйтесь открыть проблему и спросить.
cargo test
Cargo.toml
и улучшите версию.cargo clippy
и cargo fmt
.cargo build
) и протестируйте ( cargo test
)git add -p
git ci -m 'Bumping to vx.x.x'
git tag vx.xx
git push origin head --tags
cargo publish
Старый:
pkg/brew/mcfly.rb
и обновите версию и SHA. ( shasum -a 256 ...
)../homebrew-mcfly/pkg/brew/mcfly.rb
.cp pkg/brew/mcfly.rb ../homebrew-mcfly/pkg/brew/mcfly.rb
diff ../homebrew-mcfly/pkg/brew/mcfly.rb ../mcfly/pkg/brew/mcfly.rb ; diff ../homebrew-mcfly/HomebrewFormula/mcfly.rb ../mcfly/HomebrewFormula/mcfly.rb
git add -p && git ci -m 'Update homebrew' && git push
cd ../homebrew-mcfly && git add -p && git ci -m 'Update homebrew' && git push && cd ../mcfly