Как сделать поведение истории о-мой-zsh похожим на Bash's?

Недавно я переключился на oh-my-zsh, и я не могу привыкнуть к тому, как работает стрелка вверх. Когда я вхожу в ssh, например, и нажимаю, он показывает только команды, начинающиеся с ssh, тогда как я предпочел бы, чтобы вместо этого отображалась предыдущая команда. Как я могу заставить себя вести себя так, как это делает Баш, к чему я уже привык?

Обратите внимание, что добавление строк из ответа в конец моего zshrc не помогло, и это не произошло после обновления, сразу после переключения на oh-my-zsh из bash.

One Solution collect form web for “Как сделать поведение истории о-мой-zsh похожим на Bash's?”

Как ни странно, ответ на вопрос, который люди предлагают в качестве дубликата …

  bindkey '\ e [A' история-начало-поиск-назад
 bindkey '\ e [B' history-begin-search-forward 

… это точно неправильный ответ . Это гарантирует, что контрольные последовательности вашего терминала для клавиш редактирования стрелок будут отображаться ZLE в виджеты расширения, history-beginning-search-backward и с history-beginning-search-forward , которые предоставляются плагином для history-substring-search Oh My ZSH ,

Это именно то, чего вы не хотите.

Вы пытаетесь отключить эту функцию, потому что предпочитаете другое поведение; не пытаясь восстановить его, потому что он сломан.

Вы хотите, чтобы эти ключи отображались в виджетах, как в ванильном Z Shell, Oh My ZSH, являющемся баррелей расширений и настроек Z-оболочки, которым нравятся некоторые (но не все) люди. Вина Виллы Z Shell имеют примерно прежнее поведение оболочки Bourne Again, которое вы предпочитаете. (В отличие от оболочки Bourne Again, однако, если у вас есть многострочный редакторский буфер, они будут перемещаться вверх и вниз внутри него до, в верхнем и нижнем краях буфера, перемещая вверх и вниз по истории.)

Этими виджетами будут:

  bindkey "$ terminfo [kcuu1]" up-line-or-history
 bindkey "$ terminfo [kcud1]" down-line-or-history 

Обратите внимание на то, как один работает, чтобы не связать один конкретный тип терминала с вашими сценариями. В качестве альтернативы можно использовать "$termcap[ku]" и "$termcap[kd]" . Z Shell, предполагая, что у вас есть соответствующие модули, поддерживает карту для обоих. Вообще мир предпочитает terminfo, если он имеет это в наши дни. Чтобы быть строго пуленепробиваемым, в чем-то, что вы используете с гетерогенными системами или предоставляете другим людям, вам понадобится test -n там – так же, как вы найдете расширения Oh My ZSH.

  test -n "$ terminfo [kcuu1]" && bindkey "$ terminfo [kcuu1]" up-line-or-history
 test -n "$ terminfo [kcud1]" && bindkey "$ terminfo [kcud1]" down-line-or-history 

(В крайнем случае, чтобы справиться с некоторыми маловероятными возможностями, вам понадобится некоторое расширение переменной "${terminfo[x]-${termcap[y]}}" Расширения Oh My ZSH не беспокоят этого последнего, и в Практика практически у всех есть модули termcap и terminfo, и все, о чем вам нужно беспокоиться, заключается в том, действительно ли запись для вашего текущего типа терминала определяет соответствующие контрольные последовательности, что и есть test -n для.)

Более точное приближение поведения оболочки Bourne Again было бы

  bindkey "$ terminfo [kcuu1]" up-history
 bindkey "$ terminfo [kcud1]" down-history 

Это не стандартная версия Vanilla Z Shell, и после редактирования вашей первой многострочной командной строки вы можете решить, что по умолчанию вы предпочитаете. ☺

  • Как включить команду «daw» vi в zsh?
  • Автоматически помещать псевдоним в ~ / .bashrc или ~ / .zshrc
  • zsh glob pattern для соответствия всем файлам, кроме одного, не работает, несмотря на то, что EXTENDED_GLOB установлен
  • В zsh разница между cat <(cat) и cat | cat против cat = (кошка)?
  • zsh: удалить предсказанный текст
  • запуск терминатора с zsh и автоматически применять «set -o ignoreeof»
  • сделать мой режим отображения zsh в режиме vi
  • В чем главная проблема, с которой сталкивается кто-то, мигрирующий из bash в zsh?
  • Возможно ли возобновить источник .bashrc и .zshrc И удалить функции один раз внутри них без перезапуска?
  • Как я могу вернуться в «обычный» режим редактирования после нажатия esc в режиме zsh (vi)?
  • Режим vi не отображается корректно на новом терминале
  • На `fork`, дочерних процессах и" подоболочках "
  • Linux и Unix - лучшая ОС в мире.