CC-режим определяет С-С-С-D в c-mode-base-map
быть c-hungry-delete-forward
, который скрывает ваши связывания на глобальном уровне. Таким образом, лучший способ решить эту проблему состоит в Undefine связывания, что cc-mode
сделал, и вы делаете это со следующим:
(eval-after-load "cc-mode"
'(define-key c-mode-base-map (kbd "C-c C-d") nil))
Вы также можете сделать это в крюк, но я предпочитаю eval-after-load
потому что это только выполняется один раз.
Примечание: Я определил существующие привязки, открыв файл в c-mode
и набрав Ch Ck Cc Cd (ака Mx описывают связывания Cc Cd) и видящими:
Cc Cd запускает команду c-hungry-delete-forward, которая представляет собой интерактивную скомпилированную функцию Lisp в `cc-cmds.el '.
Это сделал его довольно ясно, что связывание было создано в (один из) c-mode
с, так что я просто открыл (или grep
редактора) исходные файлы для c-hungry-delete-forward
, после чего я нашел:
(define-key c-mode-base-map "\C-c\C-d" 'c-hungry-delete-forward)
И тогда ответ был прямолинейным.
Я думаю, что лучше Undefine локальных привязок, которые скрываются глобальные привязки, которые вы хотите, а не пересматривают их. Так же сложно найти проблемные привязки, и таким образом, если вы хотите изменить функцию глобального связывания, вам нужно сделать это только в одном месте.
Спасибо. Для дальнейшего использования, как вы узнали, какие другие режимы определены? Есть ли файл где-нибудь? – Jon
@Jon Я обновил ответ, чтобы помочь с этим, но это не совсем прямо. –