![将 Emacs 窗口拆分到新框架中](https://linux22.com/image/1331569/%E5%B0%86%20Emacs%20%E7%AA%97%E5%8F%A3%E6%8B%86%E5%88%86%E5%88%B0%E6%96%B0%E6%A1%86%E6%9E%B6%E4%B8%AD.png)
从框架来看第一帧包含两个 Emacs 窗口,赢一显示缓冲区缓冲区一和双赢显示缓冲区二,我希望能够“打破”双赢将其关闭到其自己的框架中,也许可以使用模式行上的修饰键单击。在此之后,
- 两个都赢一和双赢将保留它们各自的高度/宽度和缓冲区关联,当第一帧
- 赢一会保持原样第一帧, 和双赢现在将处于一个新的、独立的第二帧
- 尽可能保留原始位置、颜色和字体设置
我想知道这种行为是否在标准库的某个地方可用,是否有它的扩展,或者一个小的 elisp 函数是否可以起作用?
答案1
是的,有这样的命令: 。我在模式行上将mouse-tear-off-window
其绑定到:C-mouse-1
(global-set-key [mode-line C-mouse-1] 'mouse-tear-off-window)
该命令在 vanilla Emacs ( ) 中可用emacs -Q
。但我使用自己的版本,如果窗口单独位于其框架中,则不会删除该窗口。相反,它会克隆框架和窗口。该版本位于库中鼠标+.el. 文档字符串:
,----
| mouse-tear-off-window is an interactive compiled Lisp function in
| `mouse+.el'.
|
| It is bound to mode-line C-mouse-1.
|
| (mouse-tear-off-window EVENT)
|
| Create a new frame displaying buffer of window clicked on.
| If window is not the only one in frame, then delete it.
| Otherwise, this command effectively clones the frame and window.
`----
答案2
这是一个默认绑定:
C-x 5 C-o : display-buffer-other-frame
其作用是:在另一帧中显示缓冲区BUFFER。
答案3
您可以使用:
M-x new-frame
我已将其绑定到F9,例如:
(global-set-key (kbd "<f9>") 'new-frame)