Заставить iTerm переводить «мета-ключ» так же, как и в других ОС

179

В оболочке bash с привязкой ключей emacs вы можете использовать комбинацию клавиш, такую ​​как Mf, Mb, чтобы переместиться на одно слово вперед или назад в приглашении оболочки соответственно. Обычно мета-ключ сопоставляется с Alt-ключом в Windows и Linux. Однако в iTerm я не смог найти способ привязать этот мета-ключ к клавише Option или Command на моем MacBook Pro.

Кажется, что в OS X метаключ по умолчанию сопоставлен с ключом ESC. Таким образом, вы можете использовать ESC-F, ESC-B на iTerm. Однако ключ ESC, по-видимому, не практичен в использовании. Кроме того, в iTerm есть опция, которая позволяет вам отображать модификаторы для мета-ключа (Закладки> Профили> Профили клавиатуры> Глобальные> Клавиша опции как ...), этот параметр, похоже, не работает вообще.

Поэтому, если кто-нибудь знает, как решить эту проблему, пожалуйста, дайте мне знать.

Я обновился до последней версии 0.9.6.1012, и это поведение сохраняется до сих пор.

Изменить: некоторые разъяснения на мой вопрос. Связывание клавиш, о котором я говорю, относится к оболочке bash, а не к emacs. Просто так получается, что по умолчанию оболочка bash также использует ту же привязку клавиш, что и emacs.

ejel
источник
После того, как возиться с этой проблемой некоторое время и не могу найти решение. Я сдался и переключился на терминал сейчас.
ejel
2
не забывайте, что iterm2 уже существует и там все хорошо =)
holms

Ответы:

207

Cmd+., Profiles, KeysИ выберите Left option Key acts as: +Esc.

У меня работает в Emacs, хотя я не уверен, будет ли это иметь какие-либо другие нежелательные эффекты.

Сорин
источник
Я попробовал Option Key как ... со всеми вариантами, но ни один из них не работает для меня в оболочке bash. Это только показывает "?" каждый раз, когда я нажимаю комбинацию мета-клавиш.
ejel
2
Похоже, ваш язык ввода должен быть американским, чтобы опция + ESC работала. + ESC не работал для меня, когда я выбрал метод ввода японский / ромадзи, но он начал работать, как только я переключил язык ввода на американский
Доминик Куни
2
Предпочтения, Профиль, Ключи и выберите Левый вариант Ключ действует как: + Esc. Тогда у вас будет как левая клавиша выбора, так и клавиша Esc в качестве мета-ключа. Вот что произошло в моем случае.
cgl
С iTerm 2 это, кажется, рекомендуемый вариант.
ejel
4
Для моей внешней клавиатуры я должен был установить и левую и правую клавиши выбора Esc+, хотя я использовал левую клавишу выбора, она все еще печатала бы странные символы. Это может произойти, потому что я использую опцию Keyboard Modifiers в настройках клавиатуры Mac для изменения клавиш.
Грего
130

Перейдите в Закладки> Управление профилями . Затем выберите « Keyboard Profiles»> «Global» и выберите « Option Key» в качестве мета-кода . Это работает для меня в версии 0.9.6.1201.

Даг Хейдал
источник
2
Мне пришлось изменить запись xterm (OS X), а не глобальную, но теперь она работает.
Джейсон Аксельсон
Я не знаю, почему на моей машине не работает настройка 0.9.6.1201 и нескольких других сборок, которые я пробовал. Однако он работает с последней версией 0.9.6 и 0.10. Так что это не должно быть проблемой сейчас.
ejel
11
в iTerm2 это работало только после того, как я переопределил сочетания клавиш профиля для alt+ ->и alt+ <-для отправки Escape-последовательности + f/ bсоответственно.
Амир Ниссим
Я должен был открыть новую сессию iterm, чтобы это
началось
@SridharRatnakumar работает и для iTerm
Кшиштоф Венде
31

В строке меню Iterm2 => Настройки => Профили выберите вкладку ключей и выберите

левая клавиша Option действует как + Esc

введите описание изображения здесь

у меня тоже работал в irssi.

anquegi
источник
Отлично, это также работает в комбинации iTerm2 + tmux
TheJavaGuy-Иван Милосавлевич
8

Я также не смог заставить работать клавишу Alt, но есть обходной путь, который делает ее как минимум функцией для навигации по словам с помощью клавиш курсора:

Перейти к следующему или предыдущему слову в iTerm, используя Alt / Option + клавиши со стрелками влево или вправо

nyenyec
источник
2
Для backward-delete-word(⎇-DEL) отправьте шестнадцатеричный код 0x17, для перехода к началу ввода (⌘- ←) 0x01и для перехода к концу (⌘- →) 0x05.
Ленар Хойт
5

Я использую iTerm2 , и для меня этот ответ лишь частично решил мою проблему:

Cmd+ ,=> Профили => Ключи и выберите Левый вариант Ключ действует как: + Esc .

введите описание изображения здесь

В дополнение к этому, мне пришлось перейти к Cmd+ ,=> Profiles => Keys и в списке сопоставлений клавиш найти обе комбинации клавиш s: введите описание изображения здесьи введите описание изображения здесьдважды щелкнуть их и изменить их сочетания клавиш на следующие:

введите описание изображения здесь

введите описание изображения здесь

* Обязательно выберите действие « Отправить Escape-последовательность» .

М. Демьянчук
источник
Это действительно полезно. Большое спасибо, братан!
Леон - Хан Ли
4

Здесь происходит все воскресение зомби, но ради потомства -

В этом посте он работал так, как вы хотите для меня, для Мб и Мф, при этом оставив «Option Key as Meta», чтобы вы не жертвовали модификатором (у меня есть отображение vim, использующее meta, лично).

В итоге, в вашем профиле глобальной клавиатуры добавьте два новых сопоставления с настройками:

  1. Ключ в виде шестнадцатеричного кода, значение 62 для b, 66 для f ( man ascii)
  2. Модификатор как опция
  3. Действие как отправить escape-последовательность, значение b или f

Единственное, что мне до сих пор не хватает из Terminal.app - Opt-Backspaceэто удаление по слову. Для этого есть и другие обходные пути, но я просто пытаюсь научиться использовать их Ctrl-w.

чес
источник
Может быть новая функция с этого ответа, но вы можете сопоставить Глобальные сочетания клавиш для отправки Ctrl-wпри Opt-Backspaceнажатии.
Стив Бузонас
4

Это проще в iTerm2. Перейдите в настройки-> закладка-> клавиатура и выберите «Параметры отправки + ESC». В iTerm2 вы можете настроить левую и правую клавиши выбора отдельно, поэтому не забывайте менять обе, если это то, что вы хотите. Ссылка на iTerm2: http://sites.google.com/site/iterm2home/

Джордж
источник
2

Перейдите в Закладки> Управление профилями. Затем выберите Keyboard Profiles> Global и выберите Option Key как + ESC.

Работает в iTerm Build 0.9.5.0611 и Build 0.9.6.20090415


источник
Хм. Кажется, что установка на моей машине не работает с этими двумя версиями. Однако последние 0.9.6.20090928 и 0.10 работают, как и ожидалось.
ejel
2

Я также нашел какое-то решение для stackoverflow, просто зайдите в профиль клавиатуры и в «Global» изменить «Option» как «+ ESC».

это работает для меня идеально =) Кстати, есть некоторые iterm патч, смотрите здесь: http://www.emacswiki.org/emacs/EmacsForMacOS

Holms
источник
0

Попробуйте "экспортировать LANG = C". Я не эксперт по emacs, но я обнаружил, что это позволяет emacs в OS X распознавать ключ Option как мета-ключ в iTerm,


источник
0

Я не знаю про iTerm, но вы можете сделать это в Терминале. Инструкции можно найти здесь:

Emacs в Mac OS X привязки клавиш Leopard

Кайл Кронин
источник
Спасибо. Я знаю, что я могу сделать это в терминале. Я просто хочу добиться того же результата в iTerm. Кстати, я ищу привязку клавиш в оболочке bash, а не в emacs. Случается, что оболочка bash также использует привязку ключей emacs.
ejel
0

Вот что сработало для меня: Закладки> Управление профилями> Профили клавиатуры> Global / xterm> Клавиша Option как + Esc. При этом я могу использовать Option + Enter в Midnight Commander, и текущее выбранное имя файла / каталога отображается в командной строке, как и должно быть. Вариант Key как Meta у меня не работал. Моя сборка iTerm 0.10.

Михаил на ЮгаБайте
источник