Вопрос по macos, terminal – Emacs в терминале мета-стрелки

8

Я только что переключился с использования Emacs.app на сервер emacs и emacsclient в режиме терминала, используя iterm2 в качестве моего эмулятора терминала. У меня возникли проблемы с сочетанием клавиш. В частности, M-стрелка влево печатает символ D, M-стрелка вправо C, M-стрелка вверх печатает A, и M-стрелка печатает B. Хотя M-ret работает, по крайней мере, для режима орг. Я использую значения по умолчанию xterm для ключей в iterm2, а левая и правая клавиши выбора связаны с + Esc. Я могу получить функциональность M-left в режиме org с помощью Esc-left или Esc-right. Это особенно раздражает в режиме org. Я собираюсь просто привязать ключи в моем .emacs? Как бы я поступил так?

Я смотрел на этоhttp://orgmode.org/manual/TTY-keys.html#TTY-keys, но я не понимаю, почему клавиши со стрелками должны быть недоступны в терминале.

редактировать:

Кошачий мета-ап:^[[1;9A Кошачий мета-вниз:^[[1;9B Cat мета-право:^[[1;9C Кошка мета-слева:^[[1;9D

Основная проблема решена, но у меня сейчас проблемы сshift-up. "<select> undefined", Я пробовал подобное сопоставление с escape-последовательностью, полученной изcat: ^[[1;2A, Не хочет создавать еще один вопрос для аналогичной проблемы.

ах хорошо, спасибо, должно быть исправлено Zach
хорошо сделано, это похоже на вывод, который я получаю в Emacs, когда я пытаюсь использовать мета Zach
Хм .. нет, типаcat, нажмите ввод, а затем нажмите клавиши со стрелками. Casper
Типcat в командной строке и нажмите клавиши мета-стрелки. Это покажет вам esc-последовательности, которые выдают ваши клавиши со стрелками. Пожалуйста, добавьте это к своему вопросу. Например, на моих выводах M-up терминала:^[^[[A. Casper

Ваш Ответ

2   ответа
2

но новую проблему решаю. редактировать.

I found this guy's blog post on this issue: - http://webframp.com/emacs/2013/02/22/fixing-emacs-bindings-on-the-in-iterm2/

По сути, вы можете использовать «запустить кота»; и нажмите кнопки, чтобы увидеть, какие коды перехода отправляются вашей системой / терминалом, затем добавьте «define-key». строки для определения M- {вверх, вниз, вправо, влево}, а также M-S- {вверх, вниз, вправо, влево}.

СПАСИБО именно то, что мне было нужно. Кажется, что коды символов у всех немного отличаются. Выше использовали [1; 4x]. Этот пост в блоге показал [1; 3x]. Но мои были [1; 9x]. Очень запутанно.
11

Solution 1

Основываясь на информации, которую вы предоставили здесь, вы можете попробовать одну вещь. Вы приказываете emacs отобразить эти escape-последовательности на соответствующие последовательности ключей:

(add-hook 'term-setup-hook
  '(lambda ()
     (define-key function-key-map "\e[1;9A" [M-up])
     (define-key function-key-map "\e[1;9B" [M-down])
     (define-key function-key-map "\e[1;9C" [M-right])
     (define-key function-key-map "\e[1;9D" [M-left])))

Solution 2

Я также нашел другое возможное решение с небольшим гуглом: вместо этого переопределите привязки iTerm, чтобы соответствовать тому, что ищет emacs.

http://offbytwo.com/2012/01/15/emacs-plus-paredit-under-terminal.html

Цитата с вышеуказанной страницы:

Go back to the profile key bindings under iTerm2 and add bindings for the following:

M-up      : Esc-[1;4A
M-down    : Esc-[1;4B
M-right   : Esc-[1;4C
M-left    : Esc-[1;4D
Ранее я пытался переразметить его через iterm, но я, должно быть, делал что-то еще неправильно. Крюк работал, хотя. Спасибо! Zach
Эти значения выглядят неправильно; 4 - Shift + Alt, а не только Alt.

Похожие вопросы