ALT+ стрелка, перемещающаяся между словами в zsh и iTerm2

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

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

6 ответов

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

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

Что мне больше всего помогло сделать навигацию в командной строке iTerm2 более интуитивно понятной для меня (я молодой человек, который не вырос в командной строке, но я провел много времени в текстовых редакторах и IDE). чтобы:

  • Зайдите в Настройки -> Профиль -> Ключи
  • Под списком Key Mappings есть поле для добавления / удаления или загрузки пресетов (комбинированное окно)
  • Выберите Natural Text Editing опция в выпадающем меню Presets.

По умолчанию ключи редактора более стандартны, и мне не нужно изменять каждую опцию отдельно.

Вы ищете ключевые слова 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 отправляла что-то отличное от ожидаемого мета-выхода.

Я не могу говорить за 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 file for persistance, в качестве первого аргумента, и является связанным, что означает, что нажатие клавиши в первом аргументе выполнит определенную команду редактора (или виджет в терминах zsh) для виджета, который в первой строке приведенного выше примера является forward-word,

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

$ source ~/.zshrc

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

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

В дополнение к ответу loganjones16 вот скриншот пункта меню «Редактирование естественного текста »:

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

Другие вопросы по тегам