6

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

2 ответа2

3

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

Например, с zsh, в консоле работает Shift+Up.
В xterm нет, но работает Shift+PgUp.

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

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

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

По умолчанию up-line-or-history должна быть связана с Up, но вы можете связать ее (почти) с любой другой последовательностью клавиш с помощью bindkey . В терминалах специальные ключи (ключи, которые не генерируют печатаемый символ) генерируют последовательность клавиш, которая затем интерпретируется оболочкой - или нет, как показывает ваш пример 2A для 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 даже используются для ярлыков самого терминала и недоступны в оболочке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .