Подтвердить что ты не робот

Поиск решения ALT + LeftArrowKey в zsh

Недавно я переключился с bash на zsh, но я пропустил свои Alt + LeftArrowKey и Alt + RightArrowKey, чтобы каждый раз повторять слово.

Прямо сейчас, если я нажимаю Alt + LeftArrowKey, я возвращаю пару писем, а затем застрял. Я больше не буду идти назад, и он не вернется к концу строки с Alt + RightArrowKey, как я ожидал. Я даже не могу использовать клавиши со стрелками, чтобы перейти в конец строки, только до второго. Невозможно ввести новые символы в строке или удалить.

Как мне вернуть мой любимый ярлык?

Я нахожусь в Mac OS X, используя Terminal, если это важно.

4b9b3361

Ответ 1

Запустите cat затем нажмите клавиши, чтобы увидеть коды, которые отправляет ваш ярлык.
(Нажмите Ctrl + C, чтобы убить cat когда вы закончите.)
Для меня (ubuntu, konsole, xterm) нажатие Alt + отправляет ^[[1;3D, поэтому я бы вставил свой .zshrc

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

(На самом деле я предпочитаю использовать Ctrl + стрелка для перемещения слово за словом, как в обычном текстовом поле под windows или linux gui.)

Связанный вопрос: Исправьте настройки ключа (Home/End/Insert/Delete) в .zshrc при запуске Zsh в эмуляторе терминала Terminator

Ответ 2

Для тех, кто использует iTerm, независимо от оболочки

Все предлагаемые здесь решения, на мой взгляд, требуют обратного подхода. Вы, по сути, говорите своей оболочке, чтобы прослушать некоторую последовательность esc или другое связывание ключей, которое вы установили в своем терминале, создавая проблемы совместимости при переключении оболочек (если вы используете SSH в какой-либо другой оболочке, переключитесь с BASH на ZSH и т.д. И т.д. вы теряете некоторые, если не все ваши ключевые слова).

Большинство оболочек имеют набор последовательностей по умолчанию, которые предварительно привязаны. Более того, хотя они не соответствуют 100%, они достаточно близки. Таким образом, самый простой способ, который я нашел для создания привязки к конкретному действию в оболочке, - это сообщить вашему терминальному приложению привязку к привязкам по умолчанию, которые согласованы между оболочками.

Я написал компрессионное решение, чтобы заставить ваш терминал реагировать как можно ближе к встроенным macbindings здесь

Откройте настройки iTerm + , и перейдите на вкладку Profiles (можно использовать вкладку Keys, но добавление привязки к вашему профилю позволяет сохранить профиль и синхронизировать его с несколькими компьютерами) и подтекстом Keys и введите следующее:

Переместить курсор на одно слово слева

+ Отправить шестнадцатеричные коды: 0x1b 0x62

Переместить курсор на одно слово справа

+ Отправить шестнадцатеричные коды: 0x1b 0x66

И это должно дать вам желаемое поведение не только в ZSH, но и если вы используете SSH на сервере под управлением BASH, irb/pry, node и т.д.

Ответ 3

Добавление следующего к ~/.zshrc сработало для меня на OSX Mountain Lion.

bindkey -e
bindkey '[C' forward-word
bindkey '[D' backward-word

Ответ 4

Хотя вы не строго отвечаете на свой вопрос, привязка по умолчанию для forward-word и backward-word составляет alt-f соответственно. alt-b.

Это работает повсюду, не требует, чтобы вы покинули домашнюю строку и обладаете хорошим мнемоническим свойством (f = вперед, b = назад), а также согласуетесь с ctrl-f и ctrl-b как forward-character и backward-character.

Извлеките клавиши со стрелками!

Ответ 5

В MacOS High Siera 10.13.6 или Mojave 10.14.2 и с использованием iTerm2 с ZSH. Чтобы перейти от слов, я должен поставить так:

bindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word

Другие решения не работают

Ответ 6

В Mavericks (10.9.4) код равен 1; 5... поэтому для привязки alt со стрелками у меня есть мой .zshrc, используя это:

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word

Вы можете использовать CTRL + V, а затем команду, которую вы хотите использовать

в Yosemite используйте решение Rob

Ответ 7

Чтобы это сработало, я использовал этот ответ, однако мне пришлось поменять местами коды (слева <-> справа)

← + ← Отправить шестнадцатеричные коды: 0x1b 0x66
⌥ + → Отправить шестнадцатеричные коды: 0x1b 0x62

и добавьте следующее в мой ~/.zshrc

bindkey -e
bindkey "^[b" forward-word
bindkey '^[f' backward-word

Ответ 8

В zsh вы можете использовать команду bindkey для просмотра сочетаний клавиш.