Рыбоподобные быстрые/ненавязчивые самовнушения для zsh.
Он предлагает команды по мере ввода на основе истории и завершений.
Требования: Zsh v4.3.11 или новее.
См. INSTALL.md.
По мере ввода команд вы увидите предложение завершения после курсора приглушенного серого цвета. Этот цвет можно изменить, задав переменную ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
. См. конфигурацию.
Если вы нажмете клавишу → (виджет forward-char
) или End (виджет end-of-line
), когда курсор находится в конце буфера, он примет предложение, заменив содержимое буфера командной строки предложением.
Если вы вызовете виджет forward-word
, он частично примет предложение до того момента, пока не переместится курсор.
Возможно, вы захотите переопределить глобальные переменные конфигурации по умолчанию. Значения этих переменных по умолчанию можно найти здесь.
Примечание. Если вы используете Oh My Zsh, вы можете поместить эту конфигурацию в файл в каталоге $ZSH_CUSTOM
. См. их комментарии по переопределению внутренних элементов.
Установите ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
чтобы настроить стиль, в котором отображается предложение. По умолчанию установлено значение fg=8
, при котором в качестве цвета переднего плана будет установлен цвет 8 из 256-цветной палитры. Если ваш терминал поддерживает только 8 цветов, вам нужно будет использовать число от 0 до 7.
Также можно установить цвет фона, а предложение можно оформить жирным, подчеркнутым или выделяющимся шрифтом. Например, предложения будут отображаться жирным, подчеркнутым розовым текстом на голубом фоне:
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE= " fg=#ff00ff,bg=cyan,bold,underline "
Для получения дополнительной информации прочтите раздел «Выделение символов» руководства по zsh: man zshzle
или онлайн.
Примечание. Некоторые пользователи iTerm2 сообщают, что не могут видеть предложения. Если это вас затрагивает, проблема, скорее всего, вызвана неправильными настройками цвета. Чтобы исправить это, зайдите в настройки iTerm2, перейдите в раздел «Профиль» > «Цвета» и убедитесь, что цвета для «Базовые цвета» > «Фон» и «Цвета ANSI» > «Ярко-черный» различаются .
ZSH_AUTOSUGGEST_STRATEGY
— это массив, определяющий, как следует генерировать предложения. Стратегии в массиве последовательно опробуются, пока не будет найдено предложение. В настоящее время есть три встроенные стратегии на выбор:
history
: выбирает самый последний матч из истории.completion
: выбирает предложение на основе того, что будет предложено при завершении табуляции. (требуется модуль zpty
, который включен в zsh начиная с версии 4.0.1)match_prev_cmd
: аналогично history
, но выбирает самое последнее совпадение, предыдущий элемент истории которого соответствует последней выполненной команде (подробнее). Обратите внимание, что эта стратегия не будет работать должным образом с параметрами ZSH, которые не сохраняют порядок истории, например HIST_IGNORE_ALL_DUPS
или HIST_EXPIRE_DUPS_FIRST
. Например, установка ZSH_AUTOSUGGEST_STRATEGY=(history completion)
сначала попытается найти предложение из вашей истории, но, если совпадение не удастся найти, будет найдено предложение от механизма завершения.
Этот плагин работает, запуская пользовательское поведение при вызове определенных виджетов zle. Вы можете добавлять и удалять виджеты из этих массивов, чтобы изменить поведение этого плагина:
ZSH_AUTOSUGGEST_CLEAR_WIDGETS
: виджеты в этом массиве удаляют предложение при вызове.ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
: виджеты в этом массиве примут предложение при вызове.ZSH_AUTOSUGGEST_EXECUTE_WIDGETS
: виджеты в этом массиве будут выполнять предложение при вызове.ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
: виджеты в этом массиве частично примут предложение при вызове.ZSH_AUTOSUGGEST_IGNORE_WIDGETS
: виджеты в этом массиве не будут запускать какое-либо пользовательское поведение.Виджеты, которые изменяют буфер и не найдены ни в одном из этих массивов, получат новое предложение после их вызова.
Примечание. Виджет не должен принадлежать более чем одному из вышеуказанных массивов.
Установите для ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE
целочисленное значение, чтобы отключить автоматическое предложение для больших буферов. Значение по умолчанию не установлено, что означает, что автопредложение будет выполняться для любого размера буфера. Рекомендуемое значение — 20. Это может быть полезно при вставке большого объема текста в терминал, чтобы избежать автозаполнения слишком длинных строк.
Предложения по умолчанию извлекаются асинхронно в версиях zsh 5.0.8 и выше. Чтобы отключить асинхронные предложения и вместо этого получать их синхронно, unset ZSH_AUTOSUGGEST_USE_ASYNC
после загрузки плагина.
В качестве альтернативы, если вы используете версию zsh старше 5.0.8 и хотите включить асинхронный режим, установите переменную ZSH_AUTOSUGGEST_USE_ASYNC
после загрузки плагина (ее можно установить на что угодно). Обратите внимание, что в версиях zsh старше 5.0.8 существует ошибка, из-за которой сочетание клавиш Ctrl + C не позволяет сбросить приглашение сразу после асинхронного получения предложения.
Установите ZSH_AUTOSUGGEST_MANUAL_REBIND
(его можно установить на что угодно), чтобы отключить автоматическую повторную привязку виджета для каждого precmd. Это может значительно повысить производительность, но вам придется выполнять повторную привязку самостоятельно, если какой-либо из списков виджетов изменится или если вы или другой плагин обертываете какой-либо из виджетов автозаполнения. Чтобы повторно привязать виджеты, запустите _zsh_autosuggest_bind_widgets
.
Установите для ZSH_AUTOSUGGEST_HISTORY_IGNORE
шаблон подстановки, чтобы не предлагать предложения для записей истории, соответствующих шаблону. Например, установите для него значение "cd *"
, чтобы никогда не предлагать команды cd
из истории. Или установите значение "?(#c50,)"
чтобы никогда не предлагать текст длиной 50 символов и более.
Примечание. Это влияет только на стратегии history
и предложений match_prev_cmd
.
Установите для ZSH_AUTOSUGGEST_COMPLETION_IGNORE
шаблон glob, чтобы не предлагать предложения по завершению, когда буфер соответствует этому шаблону. Например, установите для него значение "git *"
, чтобы отключить предложения по завершению для подкоманд git.
Примечание. Это влияет только на стратегию предложения completion
.
Этот плагин предоставляет несколько виджетов, которые вы можете использовать с bindkey
:
autosuggest-accept
: принимает текущее предложение.autosuggest-execute
: принимает и выполняет текущее предложение.autosuggest-clear
: удаляет текущее предложение.autosuggest-fetch
: извлекает предложение (работает, даже если предложения отключены).autosuggest-disable
: отключает предложения.autosuggest-enable
: повторно включает предложения.autosuggest-toggle
: переключает включенные/отключенные предложения.Например, это приведет к тому, что сочетание клавиш Ctrl + пробел примет текущее предложение.
bindkey ' ^ ' autosuggest-accept
Если у вас возникла проблема, просмотрите список проблем на GitHub и посмотрите, не сообщал ли об этом уже кто-то другой.
Прежде чем сообщать о проблеме, попробуйте временно отключить разделы вашей конфигурации и другие плагины, которые могут конфликтовать с этим плагином, чтобы изолировать проблему.
Сообщая о проблеме, укажите:
.zshrc
, воспроизводящая проблему. См. этот комментарий для хорошего примера того, что это означает.zsh --version
). Удалите код, ссылающийся на этот плагин, из ~/.zshrc
.
Удалите репозиторий git с жесткого диска.
rm -rf ~ /.zsh/zsh-autosuggestions # Or wherever you installed
Отредактируйте исходные файлы в src/
. Запустите make
, чтобы собрать zsh-autosuggestions.zsh
из этих исходных файлов.
Запросы на вытягивание приветствуются! Если вы отправляете запрос на вытягивание, пожалуйста:
develop
( НЕ master
) Тесты пишутся на Ruby с использованием фреймворка rspec
. Они используют tmux
для управления псевдотерминалом, отправляя симулированные нажатия клавиш и делая утверждения о содержимом терминала.
Тестовые файлы находятся в spec/
. Чтобы запустить тесты, запустите make test
. Чтобы запустить конкретный тест, запустите TESTS=spec/some_spec.rb make test
. Вы также можете указать двоичный файл zsh
, установив переменную среды TEST_ZSH_BIN
(например: TEST_ZSH_BIN=/bin/zsh make test
).
Можно запустить тесты для любой поддерживаемой версии zsh в образе Docker, создав образ из предоставленного файла Dockerfile. Чтобы создать образ докера для конкретной версии zsh (где <version>
ниже заменяется содержимым строки из файла ZSH_VERSIONS
), запустите:
docker build --build-arg TEST_ZSH_VERSION= < version > -t zsh-autosuggestions-test .
После создания образа запустите тесты с помощью:
docker run -it -v $PWD :/zsh-autosuggestions zsh-autosuggestions-test make test
Этот проект лицензируется по лицензии MIT. Полный текст лицензии см. в файле LICENSE.