![Как прокрутить на одну строку вверх в zsh?](https://rvso.com/image/1475787/%D0%9A%D0%B0%D0%BA%20%D0%BF%D1%80%D0%BE%D0%BA%D1%80%D1%83%D1%82%D0%B8%D1%82%D1%8C%20%D0%BD%D0%B0%20%D0%BE%D0%B4%D0%BD%D1%83%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83%20%D0%B2%D0%B2%D0%B5%D1%80%D1%85%20%D0%B2%20zsh%3F.png)
Я использую 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
. В терминалах специальные клавиши (клавиши, которые не генерируют печатные символы) генерируют последовательность клавиш, которая затем интерпретируется оболочкой - или нет, как показывает ваш пример 2A
for 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даже используются для ярлыков самого терминала и недоступны в оболочке.