История zsh (или, может быть, oh-my-zsh) путается с многострочными командами

Если я использую стрелку вверх в zsh-сессии, как и следовало ожидать, я получаю предыдущие команды от самых новых до самых старых. Теперь (будь то zsh или oh-my-zsh, делаю это, я не знаю), но если я наберу начало строки и нажимаю стрелку вверх, я получаю строки из своей истории, которые начинаются с того, что я набрал. Все хорошо до сих пор.

Проблема возникает, если я набираю команду с несколькими линиями, например:

  • Могу ли я сократить свои команды в Ubuntu?
  • Invoke zsh, затем * source * другой файл (при входе в интерактивный режим)
  • «Ошибка: Ошибка AudioQueueStart» при повторном запуске afplay
  • Как переименовать файлы с пробелами с помощью оболочки Linux?
  • Есть ли «chmod 777. * -R» родительские каталоги chmod (..)?
  • Есть ли способ перейти в любой каталог из любого другого каталога напрямую?
  • for i in foo bar echo $i 

    То, если я позже нажму на стрелку вверх, как только он попадет в команду с несколькими линиями, тогда будет отображаться только результат, начинающийся с. Итак, если моя история похожа:

     touch foo rm foo for i in foo bar echo $i ls 

    И я нажимаю стрелку вверх. Я получаю команду ls затем команду multi-line for команды, и с этого момента я вижу только команды, которые есть в моей истории, а не команды rm или touch .

    Есть ли какой-нибудь способ поиска в хронологическом порядке, не застревая всякий раз, когда история попадает в многострочную команду?

  • Как запустить команду / скрипт оболочки при вводе / cd-в каталоге на Snow Leopard?
  • Можно ли отключить удаленные компьютеры без ввода пароля?
  • Есть ли способ скопировать пути файлов из всех открытых открытых файлов Windows? (Для сохранения и восстановления сеанса Windows во время перезапуска)
  • Как открыть программу с помощью командной строки в Windows 8?
  • Когда происходит «запуск системы», если используется планировщик заданий с параметром / sc onstart?
  • Как закрыть приложение OS X из командной строки с помощью псевдонима, определенного в моем .bash_profile?
  • One Solution collect form web for “История zsh (или, может быть, oh-my-zsh) путается с многострочными командами”

    Описанное поведение связано с использованием up-line-or-search , который будет перемещаться по строке команды и в первой строке команды, которую он будет искать в истории для строк, начинающихся с первого слова.

    Объяснение для вашей проблемы: начиная с пустой строки любая строка в истории будет соответствовать. Пока обнаруживаются только однострочные команды, нет никакой разницы в поведении для up-history up-line-or-history или up-line-or-history . Но при достижении многострочной команды он больше не ищет, а проходит через линии. Когда верхняя строка будет достигнута, он начнет новый поиск, но теперь он ищет первое слово в этой строке вместо продолжения старого поиска любой строки.

    По умолчанию Up отображается в up-line-or-history , который возвращается назад через записи истории и в случае многострочных команд через каждую строку. up-history также будет проходить через историю, но обрабатывать многострочные команды, как однострочные. Оба будут обеспечивать ожидаемое поведение.

    Я бы предложил выполнить поиск конфигурации zsh и Oh-my-ZSH, где привязана up-line-or-search вниз, и заменить ее up-line-or-history или удалить привязку, поскольку up-line-or-history – это По умолчанию.

    Кроме того, в зависимости от используемого терминала ключевое секвентирование для Up равно либо ^[OA либо ^[[A Чтобы получить последовательность действий из вашей оболочки, оба должны быть установлены в одни и те же команды.

    Давайте будем гением компьютера.