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

Отменить привязку ключа в emacs

Например, в кодах zen-кодирования "C-j" затеняет нормальное поведение "C-j" (newline-and-indent)

(define-key zencoding-mode-keymap (kbd "C-j") 'zencoding-expand-line)

Затем как я могу отключить эту привязку клавиш и снова использовать C-j для newline-and-indent?

Я пробовал это, но он не работает:

(add-hook 'html-mode-hook
          (lambda ()
            (progn
              (zencoding-mode)
              (local-set-key (kbd "C-j") 'newline-and-indent))))

Есть ли у кого-нибудь идеи об этом?

4b9b3361

Ответ 1

Общий способ развязывания ключа (для любой раскладки клавиатуры) заключается в определении привязки nil:

(define-key KEYMAP KEY nil)

Для удобства существуют также две стандартные функции для развязки с глобальной раскладкой клавиатуры и из локальной раскладки (которая обычно является основной комбинацией клавиш).

  • (global-unset-key KEY)
  • (local-unset-key KEY)

Это интерактивные команды в соответствии с их соответствующими дополнениями global-set-key и local-set-key.

Что касается вашего конкретного примера, вы, вероятно, хотите что-то вроде этого:

(eval-after-load "zencoding-mode"
  '(define-key zencoding-mode-keymap (kbd "C-j") nil))