Как сказано в предыдущем комментарии, используйте C-h k (описать-ключ), чтобы увидеть, с чем связан ключ в тот момент, когда он не выполняет то, что вам нужно. Синтаксис (kbd "foo")
будет правильным для того, что foo
ключ описания описывает его как.
Скорее всего, вы просто не определяете этот ключ в соответствующей таблице ключей.
Обратите внимание, что основные и второстепенные режимы клавиш имеют приоритет над глобальной таблицей ключей, поэтому не стоит удивляться, если глобальная привязка переопределена.
редактирование:
Сам у меня есть функция ловушки для общего поведения для всех режимов программирования, которые я использую, и она включает в себя то, что вам нужно. Соответствующая часть выглядит так:
(defun my-coding-config ()
(local-set-key (kbd "RET") (key-binding (kbd "M-j")))
(local-set-key (kbd "<S-return>") 'newline)
)
(mapc
(lambda (language-mode-hook)
(add-hook language-mode-hook 'my-coding-config))
'(cperl-mode-hook
css-mode-hook
emacs-lisp-mode-hook
;; etc...
))
См. Ответ Daimrod для объяснения того, почему я повторно связываюсь RET с текущим связыванием Mj - хотя я использую comment-indent-new-line
(или подобное) вместо newline-and-indent
(или аналогичного), который делает то, что я хочу в комментариях и не-комментариях.
В Emacs 24 режимы программирования, кажется, происходят от prog-mode
, поэтому вы можете , вероятно, (не проверено) сократить этот список до prog-mode-hook
плюс любые исключения для сторонних режимов, которые не пока не делай этого.