如何使 emacs minibuffer 垂直?

Nul*_*ter 5 emacs

我想让 emacs 迷你缓冲区(我们在其中键入 emacs 命令)垂直。就像我们使用打开窗口的方式

C-x 3
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

Bra*_*iam 4

通常,每个帧的底部都有自己的迷你缓冲区窗口,每当选择该帧时都会使用该窗口。如果帧有迷你缓冲区,则可以使用 minibuffer-window 获取它。

嗯,显然有办法。使用 oneonone创建专用的迷你缓冲区帧。这个方法在我尝试作为1on1-emacs. 需要hexrgb.el先加载,否则无法运行。显示方式如下:

在此输入图像描述

可以看出,它为完成和迷你缓冲区打开了一个新框架。我还没有弄清楚为什么当我切换到迷你缓冲区时,它不会更改迷你缓冲区框架的范围,而是尝试重用下面的框架。也许我没有使用正确的库,但至少是一个开始。

然后我使用了一个新的迷你缓冲区窗口。新的迷你缓冲区窗口的可用性相当为零,因为我有两个迷你缓冲区(并且还没有找到删除原始缓冲区的方法),并且自动完成是在主框架而不是迷你缓冲区框架中完成的。

这是我走过的最远距离:

(setq default-minibuffer-frame
      (make-frame
       '((name . "minibuffer")
         (width . 20)
         (height . 80)
         (minibuffer . only)
         (top . 0)
         (right . 0)
         )))
(setq-default mode-line-format nil)
Run Code Online (Sandbox Code Playgroud)


Dre*_*rew 1

正如文件中的评论oneonone.el所说,只需将其放入您的~/.emacs

 (require 'oneonone)
 (1on1-emacs)
Run Code Online (Sandbox Code Playgroud)

您还可以1on1-emacs从命令行调用:

 runemacs -l "oneonone.el" -f "1on1-emacs"
Run Code Online (Sandbox Code Playgroud)

(您可能需要提供runemacs或 的绝对文件名oneonone.el,具体取决于您的目录等。)

如果您1on1-emacs在启动期间以外的任何其他方式调用,那就太晚了,因为 Emacs 已经在其初始框架中创建了另一个迷你缓冲区。这就是您上面描述的行为。

提示:如果您使用第 3 方库,则在源代码注释中查找安装/启动说明绝对没有坏处。;-)


回答最初的问题:如果您想要一个位于其他缓冲区旁边的迷你缓冲区,那么不,在同一帧中这是不可能的,据我所知。但是,是的,您可以为此使用独立的迷你缓冲区,即单独的迷你缓冲区帧。是的,oneonone.el您可以这样做——只需使用库中的选项自定义迷你缓冲区帧的位置和大小即可。

也就是说,我不明白为什么有人会想要一个迷你缓冲区。请记住,文本是水平书写的。因此,用于键入输入和显示输出消息(回显区域)的窗口/框架通常比高度更宽,而不是又高又窄。