Скопіюйте та вставте це у свій .zshrc
:
Курсори використовують місцеву історію:
bindkey "${key[Up]}" up-line-or-local-history
bindkey "${key[Down]}" down-line-or-local-history
up-line-or-local-history() {
zle set-local-history 1
zle up-line-or-history
zle set-local-history 0
}
zle -N up-line-or-local-history
down-line-or-local-history() {
zle set-local-history 1
zle down-line-or-history
zle set-local-history 0
}
zle -N down-line-or-local-history
Якщо вам також потрібні прив'язки клавіш ( CTRL+ курсори), щоб перейти через глобальну історію, додайте також це до свого .zshrc
:
bindkey "^[[1;5A" up-line-or-history # [CTRL] + Cursor up
bindkey "^[[1;5B" down-line-or-history # [CTRL] + Cursor down
Щоб зробити цю роботу опцією SHARE_HISTORY (див. Історію 16.2.4 ) потрібно активувати. Запустіть setopt
і перевірте, чи вказано "sharehistory". Якщо не додати setopt sharehistory
до свого .zshrc
. Тоді можна використовувати локальну історію set, як ми це робили вище. Документація говорить:
За замовчуванням команди руху історії відвідують імпортовані рядки, а також локальні рядки, але ви можете перемикати цю функцію та вимикати за допомогою прив'язки zle set-local-history. Можна також створити віджет zle, який змусить деякі команди ігнорувати імпортовані команди, а деякі включити їх.
Зауважте, що за замовчуванням використовується глобальна історія (і всі функції закінчуються на "zle set-local-history 0", тобто локальна історія вимкнена). Тому натискання кнопки CTRL+ здійснює Rпошук у глобальній історії за замовчуванням (що має сенс у більшості випадків).
Це досить схоже на рішення від @mpy, але готове для копіювання та вставки. Він перезаписує клавіші курсору вгору та вниз. Я використав цей запис у списку пошти .
Дивись також: