проблема
Я использую oh-my-zsh и Antigen для управления моим Zsh.
Иногда я случайно ввожу неправильную / неудачную команду в Zsh, и это очень раздражает, когда плагин zsh-autosuggestions выдает эти команды.
Например, скажем, я набрал gut status
а не git status
.
Теперь, когда я пытаюсь ввести правильную команду еще раз, после того, как я набрал g
, плагин autosuggestion gut status
как это самое близкое совпадение в недавней истории. Но это неудачная команда!
То, что я хочу сделать, это не допустить, чтобы эти ошибочные команды "загрязнили" мою историю, чтобы плагин autosuggestion не предлагал их.
Что я сделал
Я искал это, и самым близким соответствием для исключения записей из истории является установка HIST_IGNORE_SPACE, или методов игнорирования определенных команд, или удаления команд вручную после их ввода. Смотрите это и это. Но, как заметил @Adaephon 52, это происходит после того, как дело сделано.
Что я собираюсь сделать
Сейчас я имею в виду написание функции, которая запускается каждый раз, когда в Zsh вводится неудачная команда для удаления самой последней записи из истории. Тем не менее, я не достаточно знаком с Zsh, чтобы знать, существует ли этот тип триггера или как это сделать.
Примечание о принятом решении
Для тех, кто интересуется этой проблемой, принятое решение работает в том смысле, что неудачные команды не сохраняются в файле истории. fc -l
или history
подтверждает это.
Однако, похоже, что плагин zsh-autosuggestions выполняет свое собственное локальное кэширование (или генерирует предложения, используя другой механизм), поэтому он по-прежнему будет предлагать неудачные команды, но только если сеанс не закончен. Когда пользователь запускает новый экземпляр оболочки, когда предположительно плагин должен загрузить кэшированную историю, он больше не предлагает ошибочные команды (если, конечно, вы не введете их снова).
Предлагаемое решение является технически правильным, так как я (по ошибке) сформулировал свой вопрос таким образом, что для него требуется только ответ, который не дает Zsh сохранить ошибочные команды, а принятое решение делает это (хотя и ограниченным образом; см. Ссылку в решении для подробности).
Любой, кто знаком со сценариями оболочки (я не знаю) и достаточно мотивирован, может проверить скрипт zsh-autosuggestions.