12

Я вошел в систему на одном из серверов хостинг-провайдера и заметил, что ALT + влево и ALT + вправо перемещаются между словами в приглашении оболочки в GNU Screen.

Какую привязку клавиш мне нужно настроить и где можно получить такое поведение для моей локальной OS X zsh, работающей в iTerm2?

4 ответа4

23

Я нашел решение здесь: https://coderwall.com/p/h6yfda. Скопирует наиболее важные его части на случай, если ссылка отключится.

  1. Перейдите в Настройки, Профиль, Ключи.
  2. Установите левую клавишу to, чтобы действовать в качестве escape-символа.
  3. Найдите текущий ярлык для ⌥ ← или создайте новый со следующими настройками:
    • Сочетание клавиш: ⌥ ←
    • Действие: отправить Escape-последовательность
    • Esc+: B
  4. повторите для сочетания клавиш ⌥ → со следующими настройками:
    • Сочетание клавиш: ⌥ →
    • Действие: отправить Escape-последовательность
    • Esc+: F
6

Вы ищете ключевые слова backward-word и forward-word . Поэтому, если вы находитесь в оболочке, в которой не работают сочетания клавиш, попробуйте bindkey -L | grep backward-word , чтобы проверить, настроены ли они вообще. Больше информации об этом в zshzle(1) .

Вы можете вручную установить привязку клавиш, набрав что-то вроде этого:

bindkey ' Ctrl+v Alt+Right ' forward-word

bindkey ' Ctrl+v Alt+Left ' обратное слово

У меня также были некоторые проблемы с сочетаниями клавиш, и проблема почти всегда заключалась в том, что клавиша Option/Alt отправляла что-то отличное от ожидаемого мета-выхода.

2

Я не могу говорить за iTerm, но вот те сочетания клавиш, которые я использовал для решения этой проблемы в терминале GNOME на Fedora 19 с ZSH 5.0.7 и Oh-my-zsh:

bindkey "\e[1;3C" forward-word
bindkey "\e[1;3D" backward-word

где \e == последовательность escape-ключа (как описано в разделе 4.1.1)

и [ == O (прописные O; как описано в разделе 4.2.1), в некоторых случаях. Например, под tmux эта замена мне необходима, однако без tmux требуется, чтобы замена не делалась и [ == [

Коды клавиш для последовательности можно получить, используя cat и нажав нужную последовательность. Например, результаты нажатия <Alt+Right> должны интерпретироваться так:

$ cat
^[[1;3C

^[ == \e == Последовательность управляющих клавиш

[ == [ без tmux ИЛИ [ == O (заглавные o) с tmux

1;3 == Я не уверен насчет этого, но это должно логически означать <Alt>

C == Клавиша со стрелкой вправо

Затем эта последовательность передается bindkey в файле ~/.zshrc для персистентности в качестве первого аргумента и связывается, что означает, что нажатие клавиши в первом аргументе выполнит определенную команду редактора (или виджет в терминах zsh) для виджета , что в первой строке приведенного выше примера является forward-word .

~/.zshrc должен быть повторно получен после того, как эти две команды добавлены к нему:

$ source ~/.zshrc

Теперь одна неприятность в моей системе заключается в том, что эта конкретная комбинация заставляла эмулятор терминала издавать звуковой сигнал каждый раз при выполнении команды, это я исправил, отключив

'Edit'->'Profile Preferences'->'Terminal Bell' флажок.

0

Я предлагаю вам использовать zkbd для настройки сочетаний клавиш. Я использую его и Alt+Left / Alt+Right отлично работает на iTerm2. Смотрите zshcontrib(1) для подробностей о zkbd.

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