Неясно, решали ли предыдущие ответы этот вопрос, поэтому вот еще один поворот:
Исторически, " return " часто означало две вещи: возврат каретки и перевод строки.
Цитата wikipedia :
Первоначально, возврат каретки был термином для механизма или рычага на пишущей машинке, который вызывал бы цилиндр, на котором держалась бумага(каретка), чтобы вернуться на левую сторону листа бумаги после того, как была напечатана строка текста, и обычно также перемещает бумагу на следующую строку.Позже он использовался для управляющего символа в коде Бодо на телетайпе для возврата конца строки к началу строки и не включал перевод строки.
Короче говоря, есть два кода ASCII, которыеотносится к концу строки (и, следовательно, потенциально к клавише возврата): CR (десятичное значение ASCII 13, или Ctrl-m ) и LF (десятичное число ASCII 10, или Ctrl-J).
Я думаю, что в наши дни общим условием является return или ввод ключей для сопоставления с ASCII 13 и, таким образом, "return" (RET
в сообщениях emacs).Но если вы запускаете emacs из эмулятора терминала, это может означать, что у вас нет возможности иметь привязку Cm , которая отличается от RET
.Когда я пытаюсь запустить emacs в терминале (GNU Emacs 23.2.1 на MacOS X в Terminal.app) и пытаюсь набрать Ch c (то есть нажав клавишу возврата / ввода), я получаю:
RET runs the command newline
Если я вместо этого наберу Ch c Cm (то есть, удерживая нажатой клавишу управления и нажав M), я получу:
RET runs the command newline
Другими словамиТочно так же.Emacs (и любая другая программа, запускаемая из терминала) не может определить разницу между ними.(Знание этого иногда может быть полезно - если вы вошли в систему, которая отображает вещи не так, как система, из которой вы исходите, вы можете набрать Cm или Cj дляполучить то, что вы хотите, в зависимости от того, как облажалось отображение.)
И говоря о том, что обвязка облажалась, я просто упомяну, что есть некоторые настройки stty
, которые могут иметь отношение ктакие вещи: inlcr
, inlcr
и igncr
(эти три относятся к тому, как обрабатывается ввод - есть также некоторые, связанные с выводом).Я сомневаюсь, что внесение stty изменений будет полезно для этой конкретной проблемы, но я подумал, что стоит упомянуть.
В конце я думаю, что ваш выбор:
Жить, не имея См , что означает что-то отличное от return / enter
Запустить графическую версию emacsвместо терминальной версии.Это должно иметь доступ к различным кодам клавиш, которые эмулятор терминала не передает (поскольку он эмулирует терминал, который не имеет таких вещей, как современные компьютеры).