该变量保存默认的全局按键映射表,负责将 Emacs 键盘输入映射到命令。
全局映射表通常就是该映射表。默认全局映射表是一个完整映射表,
它将 self-insert-command 绑定到所有可打印字符。
修改全局映射表中的绑定是常见做法,但不应该给该变量赋予初始映射表以外的值。
该函数返回当前全局按键映射表。除非你修改其中某一个,
否则它与 global-map 的值相同。
返回值是引用而非副本;若对其使用 keymap-set 或其他函数,
会直接修改全局按键绑定。
(current-global-map)
⇒ (keymap [set-mark-command beginning-of-line ...
delete-backward-char])
该函数返回当前缓冲区的局部按键映射表,若无则返回 nil。
下例展示了 *scratch* 缓冲区(使用 Lisp Interaction 模式)
的映射表是一个稀疏映射表,其中 ESC(ASCII 码 27)对应的条目是另一个稀疏映射表。
(current-local-map)
⇒ (keymap
(10 . eval-print-last-sexp)
(9 . lisp-indent-line)
(127 . backward-delete-char-untabify)
(27 keymap
(24 . eval-defun)
(17 . indent-sexp)))
current-local-map 返回的是局部映射表的引用而非副本;
若对其使用 keymap-set 等函数,会直接修改局部绑定。
该函数返回当前已启用次模式的按键映射表列表。
该函数将 keymap 设置为新的当前全局按键映射表。返回 nil。
修改全局映射表的情况非常少见。
该函数将 keymap 设置为当前缓冲区新的局部按键映射表。
若 keymap 为 nil,则该缓冲区不再拥有局部映射表。
use-local-map 返回 nil。大多数主模式命令都会使用该函数。
该变量是一个关联列表,描述根据某些变量的值决定是否活跃的按键映射表。 其元素格式如下:
(variable . keymap)
只要 variable 的值非 nil,keymap 就处于活跃状态。
通常 variable 是用于启用或禁用某个次模式的变量。See 按键映射与次要模式。
注意 minor-mode-map-alist 的元素结构与 minor-mode-alist 不同。
映射表必须是元素的 CDR;以映射表为第二个元素的普通列表无效。
CDR 可以是一个按键映射表(列表),也可以是一个函数定义为按键映射表的符号。
当多个次模式映射表同时活跃时,minor-mode-map-alist 中靠前的元素优先级更高。
但你在设计次模式时应避免相互冲突,这样顺序便不再重要。
有关次模式的更多信息,参见 按键映射与次要模式。
另请参见 minor-mode-key-binding(see 按键查找函数)。
该变量允许主模式覆盖特定次模式的按键绑定。
其元素格式与 minor-mode-map-alist 相同:(variable . keymap)。
如果某个变量同时出现在本列表与 minor-mode-map-alist 中,
本列表中指定的映射表会完全替换后者中同一变量对应的映射表。
minor-mode-overriding-map-alist 在所有缓冲区中自动成为局部变量。
若该变量非 nil,它保存的按键映射表将替代缓冲区局部映射表、
任何文本属性或覆盖层映射表以及所有次模式映射表生效。
如果指定该映射表,它会覆盖原本活跃的所有其他映射表,全局映射表除外。
若该变量非 nil,它保存的映射表优先级高于 overriding-local-map、
局部映射表、文本/覆盖层映射表以及所有次模式映射表。
该变量始终是当前终端局部的,不能设为缓冲区局部。See Multiple Terminals。 它用于实现增量搜索模式。
若该变量非 nil,overriding-local-map 或
overriding-terminal-local-map 会影响菜单栏显示。
默认值为 nil,因此这些映射表变量对菜单栏无影响。
注意即使不影响菜单栏显示,这两个映射表变量依然会影响通过菜单栏输入的按键序列执行。 因此当菜单栏按键事件到来时,应在查找并执行前清空这些变量。 使用这些变量的模式通常都会这样处理:它们对无法处理的事件执行“反读”并退出。
该变量保存用于特殊事件的按键映射表。
如果某类事件在该映射表中有绑定,则它属于特殊事件,
其绑定会由 read-event 直接运行。See 特殊事件。
该变量保存一组用于模拟模式的按键映射表关联列表。
适用于使用多个次模式映射表的模式或包。
每个元素都是一个格式与含义同 minor-mode-map-alist 的映射表关联列表,
或是一个变量值为此类列表的符号。
每个列表中的活跃映射表优先级高于 minor-mode-map-alist
和 minor-mode-overriding-map-alist。
该函数将 keymap 添加为临时(transient)按键映射表, 使其在接下来一次或多次按键时优先级高于其他映射表。
默认情况下,keymap 只使用一次,用于查找下一个按键。
若可选参数 keep-pred 为 t,则只要用户输入该映射表中定义的按键,
映射表就保持活跃;当用户输入一个不在该映射表 keymap 中的按键时,临时映射表被禁用,
并对该按键继续执行正常查找流程。
keep-pred 也可以是一个函数。这种情况下,在 keymap 活跃期间,
每次执行命令前都会调用该无参函数;若返回非 nil,则保持 keymap 活跃。
可选参数 on-exit 若非 nil,指定一个无参函数,
在 keymap 被禁用后执行。
可选参数 message 指定激活临时映射表后显示的提示信息。
若为字符串,则作为提示信息的格式串,其中 ‘%k’ 会被替换为临时映射表中的按键列表。
其他非 nil 的 message 值表示使用默认格式 ‘Repeat with %k’。
若可选参数 timeout 非 nil,应为一个数字,
指定在空闲多少秒后禁用 keymap。
变量 set-transient-map-timeout 的值(若非 nil)会覆盖该参数。
该函数的实现方式是在变量 overriding-terminal-local-map 中添加或移除
keymap,该变量优先级高于所有其他活跃映射表(see 搜索活跃按键映射表)。