在大多数方面,迷你缓冲区都是普通的 Emacs 缓冲区。大多数在缓冲区 内部 的操作(如编辑命令)在迷你缓冲区中都能正常工作。不过,许多管理缓冲区的操作并不适用于迷你缓冲区。迷你缓冲区的名称始终形如 ‘ *Minibuf-number*’,且无法修改。迷你缓冲区只显示在专门用于迷你缓冲区的特殊窗口中;这些窗口总是出现在框架底部。(有些框架没有迷你缓冲区窗口,而某些特殊框架只包含迷你缓冲区窗口;参见 Minibuffers and Frames。)
迷你缓冲区中的文本总是以 提示字符串(prompt string) 开头,该文本由使用迷你缓冲区的程序指定,用于告知用户需要输入何种内容。这段文本被标记为只读,以防意外删除或修改。它同时被标记为字段(see Defining and Using Fields),因此 beginning-of-line、forward-word、forward-sentence 和 forward-paragraph 等移动函数会在提示与实际文本的边界处停止。
迷你缓冲区的窗口通常只有一行;如果内容需要更多空间,它会自动扩展。迷你缓冲区处于激活状态时,你可以使用窗口尺寸命令临时调整其大小;退出迷你缓冲区后,窗口会恢复为默认尺寸。迷你缓冲区未激活时,你可以在框架的其他窗口中使用尺寸命令,或用鼠标拖动模式行来永久调整迷你缓冲区窗口的大小。(受当前实现细节影响,此功能要求 resize-mini-windows 为 nil。)如果框架只包含迷你缓冲区窗口,则可通过调整框架尺寸来改变其大小。
使用迷你缓冲区读取输入事件会改变 this-command 和 last-command 等变量的值(see Information from the Command Loop)。如果你不希望这些变量被修改,应在使用迷你缓冲区的代码外围对其进行绑定。
在某些情况下,即使已有激活的迷你缓冲区,命令仍可使用新的迷你缓冲区;这样的迷你缓冲区称为 递归迷你缓冲区(recursive minibuffer)。第一个迷你缓冲区名为 ‘ *Minibuf-1*’。递归迷你缓冲区通过名称末尾数字递增来命名。(名称以空格开头,因此不会出现在普通缓冲区列表中。)在多个递归迷你缓冲区中,最内层(或最近进入的)为 激活迷你缓冲区(active minibuffer) – 可通过在其中输入 RET(exit-minibuffer)结束。我们通常直接称其为 迷你缓冲区。你可以通过设置变量 enable-recursive-minibuffers 或在命令符号上添加同名属性来允许或禁止递归迷你缓冲区(See Recursive Minibuffers)。
与其他缓冲区一样,迷你缓冲区使用局部键映射(see Keymaps)指定特殊按键绑定。调用迷你缓冲区的函数会根据任务设置其局部键映射。See 使用迷你缓冲区读取文本字符串,了解非补全类迷你缓冲区局部映射。See Minibuffer Commands that Do Completion,了解用于补全的迷你缓冲区局部映射。
激活的迷你缓冲区通常使用主模式 minibuffer-mode。这是 Emacs 内部模式,没有特殊功能。若要定制迷你缓冲区的设置,建议使用 minibuffer-setup-hook(see Minibuffer Miscellany)而非 minibuffer-mode-hook,因为前者在迷你缓冲区完全初始化后才会运行。
迷你缓冲区未激活时,其主模式为 minibuffer-inactive-mode,键映射为 minibuffer-inactive-mode-map。这仅在迷你缓冲区位于独立框架中时真正有用。See Minibuffers and Frames。
Emacs 在批处理模式下运行时,任何从迷你缓冲区读取的请求实际上都会从启动 Emacs 时提供的标准输入描述符读取一行。该模式仅支持基础输入:迷你缓冲区的特殊功能(历史、补全等)在批处理模式下均不可用。