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>.

[Список аргументов недоступен, пока не будет загружено определение функции.]

Начальный прямоугольник в позиции щелчка мыши.

Другие вопросы по тегам