У меня нетрадиционный подход к этому, который я очень рекомендую.
Я переопределил ключ C-l ('ell') как префиксный ключ, и я использую его для
префикс моих любимых команд. Этот ключ очень легко набрать и
он связан с функцией ('recenter), которая не так часто используется.
Ну, я не часто использую 'recenter', но даже если вы использовали, его можно назначить
C-L C-L, который почти так же легко набрать, и небольшая цена за
возможности, открываемые Ctrl-L-картой.
(На самом деле я предпочитаю «перерисовывать дисплей», поэтому я дал
почетное место.)
Я не помню, откуда у меня волшебное заклинание, которое заставляет его работать:
(global-unset-key "\C-l")
(defvar ctl-l-map (make-keymap)
"Keymap for local bindings and functions, prefixed by (^L)")
(define-key global-map "\C-l" 'Control-L-prefix)
(fset 'Control-L-prefix ctl-l-map)
Тогда вы можете определить ключи к содержанию вашего сердца.
C-l - отличное место для привязки ваших команд,
а также функции, которые не связаны с клавишами,
или привязаны к клавишам, которые вы не можете вспомнить или которые трудно набрать.
Вот несколько примеров привязок к стандартным функциям:
(define-key ctl-l-map "\C-l" 'redraw-display)
(define-key ctl-l-map "l" 'recenter)
(define-key ctl-l-map "g" 'goto-line)
(define-key ctl-l-map "r" 'replace-string)
(define-key ctl-l-map "R" 'replace-regexp)
(define-key ctl-l-map "q" 'query-replace)
(define-key ctl-l-map "Q" 'query-replace-regexp)
(define-key ctl-l-map "o" 'overwrite-mode)
(define-key ctl-l-map "\C-w" 'kill-rectangle)
(define-key ctl-l-map "\C-y" 'yank-rectangle)
(define-key ctl-l-map "h" 'command-history)
(define-key ctl-l-map "w" 'write-region)
(define-key ctl-l-map "r" 'electric-replace-string)
(define-key ctl-l-map "\er" 'replace-string)
(define-key ctl-l-map "T" 'delete-trailing-whitespace)
(define-key ctl-l-map "C" 'describe-char)
(define-key ctl-l-map "W" 'ediff-regions-wordwise)
(define-key ctl-l-map "L" 'ediff-regions-linewise)
(define-key ctl-l-map "\C-f" 'facemenu-remove-all)
(define-key ctl-l-map "\C-c" 'calendar)
(define-key ctl-l-map "m" 'not-modified) ;; already at M-~
(define-key ctl-l-map "\C-q" 'fill-region)
(define-key ctl-l-map "u" 'set-buffer-file-coding-system)
(define-key ctl-l-map [?\C-2] 'transient-mark-mode)
(define-key ctl-l-map "\C-@" 'transient-mark-mode)
(define-key ctl-l-map "\C-n" 'linum-mode)
(define-key ctl-l-map "\C-s" 'isearch-forward-regexp)
(define-key ctl-l-map "\C-r" 'isearch-backward-regexp)a
(define-key ctl-l-map "U" 'browse-url)
(define-key ctl-l-map "F" 'browse-url-of-file)
(define-key ctl-l-map "\C-u" 'undo-only)