Как сделать историю oh-my-zsh похожей на поведение Bash?

Проблема: другой ПУТЬ в masi и корне , поэтому используйте su -p не чтобы изменить ПУТЬ при переходе к корню . Мое предложение по обходному пути

su -p
tlmgr update --self

Результат

tlmgr: package repository http://mirror.datacenter.by/pub/mirrors/CTAN/systems/texlive/tlnet (verified)
tlmgr: saving backups to /usr/local/texlive/2016/tlpkg/backups
tlmgr: no self-updates for tlmgr available.
1
13.04.2017, 15:37
1 ответ

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

bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward
… является совершенно неправильным ответом . Это гарантирует, что управляющие последовательности вашего терминала для клавиш редактирования со стрелками отображаются ZLE на виджеты расширения history-beginning-search-backward и history-beginning-search-forward, которые предоставляются подключаемым модулем Oh My ZSH history-substring-search. {{1} }

Это именно то, что вам не нужно.

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

Вы хотите, чтобы эти ключи отображались на виджеты, как в оригинальной Z Shell, Oh My ZSH - это набор расширений и настроек Z Shell, которые нравятся некоторым (но не всем) людям. Виджеты Vanilla 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
Это не стандартная Z Shell по умолчанию, и после редактирования вашей первой многострочной командной строки вы можете решить, что по умолчанию это то, что вы предпочитаете.☺
4
27.01.2020, 23:25

Теги

Похожие вопросы