Как перемещаться по истории с помощью стрелочных клавиш с zsh-autocomplete

Вопрос или проблема

Я использую zsh-autocomplete от marlonrichert на oh-my-zsh на своём Mac и столкнулся со следующей проблемой:

Каждый раз, когда я нажимаю стрелку вверх, загружается только последняя команда, а стрелки вверх/вниз не выполняют никаких действий.

Я заметил в разделе привязки клавиш, что в таблице есть столбец main, который показывает некоторые команды, помимо раскладок emacs и vicmd. Только этот столбец упоминает действия, связанные со стрелками вверх/вниз, но я никак не смог переназначить их. Я пытался добавить команды bindkey для этих клавиш в любой момент в моем файле .zshrc, но без эффекта.

bindkey '^[[A' up-line-or-search                                                
bindkey '^[[B' down-line-or-search

Например, приведённое выше пытается привязать стрелку вверх к действию, которое может быть связано с любым другим сочетанием клавиш, но только стрелки вверх/вниз ведут себя некорректно.

Запуск следующей команды подтверждает привязку клавиш:

-> % bindkey | grep up-line-or-search
"^P" up-line-or-search
"^[[A" up-line-or-search

Ctrl+P работает как задумано, но клавиша стрелки вверх — нет.

Есть ли способ перемещения по истории, используя только клавиши стрелок вверх/вниз с zsh-autocomplete?

Обратите внимание, что использование iterm или нет не влияет на это поведение.

Ответ или решение

Для настройки навигации по истории команд с использованием стрелочных клавиш в zsh-autocomplete, разработанном Мэрлоном Ричертом, важно учесть несколько моментов, которые могут помочь устранить проблему с функционированием клавиш вверх и вниз.

1. Проверка конфигурации .zshrc

Первым шагом следует убедиться, что ваша конфигурация в файле .zshrc настроена корректно. Убедитесь, что у вас есть следующая строка для инициализации zsh-autocomplete:

plugins=(... zsh-autocomplete)

2. Убедитесь в отсутствии конфликта с настройками

Проблема, с которой вы столкнулись, может быть связана с конфликтами между установленными плагинами или самими настройками oh-my-zsh. Временно отключите другие плагины и проверьте, сохраняется ли проблема:

plugins=(zsh-autocomplete)

3. Проверка настройки keybindings

Вы правильно упомянули, что команда bindkey не сработала как ожидается. Зашумление может происходить из-за того, что zsh-autocomplete использует свои собственные обработки клавиш. Убедитесь, что вы добавили привязки в соответствующем месте вашего .zshrc. Вот как это должно выглядеть:

# Включите zsh-autocomplete
source $ZSH/plugins/zsh-autocomplete/zsh-autocomplete.zsh

# Привязка клавиш, если это актуально
bindkey '^[[A' up-line-or-search
bindkey '^[[B' down-line-or-search

4. Проверка работы в другом терминале

Хотя вы упомянули, что использование iTerm не имеет значения, попробуйте протестировать поведение в других терминалах, таких как Terminal.app или Alacritty, чтобы исключить проблемы, специфичные для используемого терминала.

5. Обновление zsh и zsh-autocomplete

Убедитесь, что вы используете последнюю версию zsh и zsh-autocomplete. Обновите их, если это необходимо:

brew update && brew upgrade zsh zsh-autocomplete

6. Проверка возможных изменений в key bindings

Конечно, если ничего из вышеперечисленного не решает проблему, возможно, есть дополнительные функции zsh-autocomplete, которые вы могли бы исследовать. Залогиньтесь в терминал и выполните:

autoload -Uz compinit && compinit

Это позволит зарезервировать и проверить все возможные команды и привязки, которые могут использовать zsh-autocomplete.

Заключение

Интеграция zsh-autocomplete с использованием стрелочных клавиш для навигации по истории команд должна быть достаточно простой процедурой, если учесть все предложенные рекомендации. Обратите внимание на конфликты с другими плагинами и убедитесь, что ваши настройки соответствуют рекомендуемым нормам. Если проблема все еще сохраняется, рекомендуем обратиться в сообщество zsh-autocomplete для получения более точной помощи.

Оцените материал
Добавить комментарий

Капча загружается...