Как прокрутить на одну строку вверх в zsh?

Как прокрутить на одну строку вверх в zsh?

Я использую iTerm2 с bash и прокручиваю буфер истории на одну строку, набрав Shift+Up. Когда я переключаюсь на оболочку zsh, она просто вводит 2A. Как мне прокрутить одну строку в zsh, используя только клавиатуру, желательно с помощью Shift+Up?

решение1

Я думаю, это зависит от эмулятора терминала.

Например, сзш, в konsole работает Shift+ Up.
В xterm нет, но работает Shift+ PgUp.

Похоже, что с iTerm2 это должно работать по умолчанию:

  • переместиться на одну строку вверх
  • переместиться на одну строку вниз

решение2

Функция, которую вы ищете, предоставляется виджетами up-historyи up-line-or-history( down-historyи down-line-or-historyдля прокрутки вниз).

По умолчанию up-line-or-historyдолжно быть привязано к , Upно вы можете привязать его к (почти) любой другой последовательности клавиш с помощью bindkey. В терминалах специальные клавиши (клавиши, которые не генерируют печатные символы) генерируют последовательность клавиш, которая затем интерпретируется оболочкой - или нет, как показывает ваш пример 2Afor Shift+ Up. Эти последовательности клавиш также могут различаться в разных эмуляторах терминала. Чтобы получить правильную последовательность клавиш для вашего терминала, откройте его, затем нажмите Ctrl+, vа затем нужную вам комбинацию клавиш ( Shift+ Up). На моем терминале (rxvt-unicode) я получаю ^[[a. Затем вы можете привязать последовательность к up-historyвиджету:

bindkey <in-string> up-history

Просто замените <in-string>на найденную последовательность. В моем случае

bindkey '^[[a' up-history

Примечание 1:Скорее всего, вам придется заключить последовательность в кавычки, так как она, скорее всего, будет содержать символы, которые будут интерпретироваться zshиначе.

Заметка 2:Некоторые комбинации клавиш могут генерировать идентичные последовательности клавиш. Например, буквы, объединенные с Ctrl+, Shiftобычно не отличаются от тех же букв, объединенных только с Ctrl. Оба, Ctrl+ Shift+ aи Ctrl+, aобычно производят ^A. В некоторых эмуляторах терминала комбинации Ctrl+ Shiftдаже используются для ярлыков самого терминала и недоступны в оболочке.

Связанный контент