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

Emacs не распознает C-/в оболочке поверх ssh

Я использую Emacs в режиме оболочки через Bash в Mac Terminal, а Emacs не распознает C-/ как клавишу отмены. Кажется, что вообще не распознать C-/, поскольку ничего не происходит, когда я использую C-h k C-/ (т.е. describe-key, затем C-/). Есть идеи? Отмена с C-x u недопустима.

Спасибо.

4b9b3361

Ответ 1

Проблема заключается в том, что Emacs считает, что любой ключ-модификатор (control, shift, meta и т.д.) может применяться к любому регулярному ключу. Это верно, когда Emacs разговаривает напрямую с ОС, но не тогда, когда он работает в традиционном (псевдо) терминале, что есть у вас, когда вы используете emacs внутри ssh. В этом случае могут использоваться только модифицированные ключи, которые сопоставляются с традиционными управляющими символами ASCII. C-/ не является одним из этих ключей.

Хорошей новостью является то, что Emacs восходит к тем дням, когда терминалы ASCII были единственной игрой в городе, есть еще одна привязка для undo, которая является символом управления ASCII: C-_ (control-underscore, aka control- shift-minus, aka U + 001F UNIT SEPARATOR).

Yr hmbl crspdt на самом деле не знал, что C-/ сделал что-нибудь; он также восходит к тем дням, и C-_ - это то, что связано с его пальцами. Он не может сказать, будет ли это нажатие клавиши допустимым - это связано с использованием как Control, так и Shift - но он подозревает, что он менее плох, чем C-x u.

Ответ 2

Терминал не может отправить C-/. Все, что вам нужно - это способ отправить псевдоним отмены, например C-_, когда набирается C-/. Есть два относительно простых способа сделать это:

  • Используйте iTerm 2 вместо Mac Terminal. Он переназначает ключ из коробки.
  • Используйте KeyRemap4MacBook для переназначения C-/ на C-_ в Mac Terminal.
    • Установите KeyRemap4MacBook.
    • Reboot.
    • Открыть системные настройки > KeyRemap4MapBook
    • Включить следующую опцию "Изменить ключ" (поиск "control + slash" ):

      Для приложений > Включить только терминал > Изменить слэш (/) Клавиша

Ответ 3

emacs keybindings становятся неустойчивыми в терминалах/консолях. это королевская боль, но она обычно фиксируется. как уже упоминалось @Zach, клавиши посылаются по-разному при работе в терминалах. трюк вычисляет то, что фактически отправлено emacs, а затем привязывает его к команде, которую вы хотите выполнить. это довольно хороший (хотя старый) учебник, в котором вы можете попытаться решить эти проблемы (3.0, где он начинает проникать в то, что вам нужно сделать).