Как вы перемещаете аргумент префикса на другой ключ в Emacs?

Я использую альтернативную раскладку клавиатуры (Colemak), и я хочу переместить команду universal-argument на другой ключ в Emacs, C-l вместо C-u. Я попробовал следующее, но это не позволяет множить множественные универсальные аргументы мультипликативно (C-l C-l C-l), и он также ломает C-l C-u (который должен перемещаться на 4 строки):

(global-set-key "\C-l" 'universal-argument)
(global-set-key "\C-u" 'previous-line)

Ответы

Ответ 1

Когда вы используете префиксный аргумент, Emacs временно использует ключевую карту для обработки универсальных аргументов. Итак, вам нужно внести изменения, которые вы там сделали:

(define-key universal-argument-map "\C-l" 'universal-argument-more)
(define-key universal-argument-map "\C-u" nil)

Первый устанавливает C-l как продолжение universal-argument, а второй не определяет C-u из этого отображения b/c, вы больше не хотите, чтобы он был универсальным аргументом.