Emacs: Как переопределить Ctrl-Enter, когда включен режим CUA?
Если cua-mode включен, переопределение Ctrl-Enter не работает должным образом и всегда запускает функцию cua-set-rectangle-mark. В приведенном ниже коде вы можете видеть, что я также определил Alt-Enter для своей функции только для тестирования, и она работает нормально. Но я хочу оставить Alt-Enter на cua-set-rectangle-mark, потому что я предпочитаю использовать Ctrl-Enter для вызова моей функции, которая создает строку под текущей строкой. Что случилось?
(cua-mode t)
(defun vscode-insert-line-below()
(interactive)
(move-end-of-line 1)
(newline-and-indent))
(global-set-key (kbd "C-<return>") 'vscode-insert-line-below)
(global-set-key (kbd "M-<return>") 'vscode-insert-line-below)
1 ответ
Вероятно, это то, что вы хотите:
(cua-mode t)
(defun vscode-insert-line-below()
(interactive)
(move-end-of-line 1)
(newline-and-indent))
(define-key cua-global-keymap (kbd "<C-return>") 'vscode-insert-line-below)
(Вы можете использовать либо (kbd "<C-return>")
или (kbd "C-<return>")
, но мне нравится использовать форму, C-h k
показывает мне.)
Когда ты в cua-mode
локальная раскладка клавиатуры cua-global-keymap
, и его привязки переопределяют те же глобальные привязки.
Я нашел эту карту, выполнив C-h k C-RET
в cua-mode
. Он сказал мне:
<C-return>
запускает командуcua-set-rectangle-mark
(найти вcua-global-keymap
), которая представляет собой интерактивную автоматически загружаемую функцию Lisp вcua-rect.el
.Это обязательно
<C-return>
.[Список аргументов недоступен, пока не будет загружено определение функции.]
Начальный прямоугольник в позиции щелчка мыши.