ALT+ стрелка, перемещающаяся между словами в zsh и iTerm2
Я вошел в систему на одном из серверов хостинг-провайдера и заметил, что ALT + влево и ALT + вправо перемещаются между словами в приглашении оболочки в GNU Screen.
Какую привязку клавиш мне нужно настроить и где можно получить такое поведение для моей локальной OS X zsh, работающей в iTerm2?
6 ответов
Я нашел решение здесь: https://coderwall.com/p/h6yfda. Скопирует наиболее важные его части на случай, если ссылка отключится.
- Перейдите в Настройки, Профиль, Ключи.
- Установите левую клавишу to, чтобы действовать в качестве escape-символа.
- Найдите текущий ярлык для ⌥ ← или создайте новый, со следующими настройками:
- Сочетание клавиш: ⌥←
- Действие: Отправить Escape-последовательность
- Esc+: B
- повторите для сочетания клавиш ⌥→ со следующими настройками:
- Сочетание клавиш: ⌥→
- Действие: отправить 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.