我在Emacs窗口中打开了许多缓冲区。我想把其中一个缓冲区移到一个新窗口。有没有这样做的命令?
发布于 2019-08-01 16:35:41
IIUC,您想创建一个新的WM窗口。
Emacs使用的术语略有不同:在GUI环境中通常称为"windows“,Emacs称为”frame“。对于单个帧,Emacs将其区域细分为单独的“窗口”(即使在非图形用户界面环境中,Emacs也充当“平铺”窗口管理器( WIthin ))。因此,您可以使用C-x 5 2
(或等效的M-x make-frame-command RET
)创建一个新帧,然后在该帧中,使用C-x b <buffer-name> RET
切换到所需的缓冲区。
顺便说一句,注意不要将缓冲区“移动”到新的帧中:缓冲区的存在与显示缓冲区的帧中是否有(emacs)窗口无关。
发布于 2019-08-02 01:54:25
您要查找的命令是tear-off-window
。请注意,此命令必须与鼠标单击事件相关联。
例如,您可以将以下代码(from this reddit comment)放入初始化文件(有关初始化文件here的更多信息):
(global-set-key [mode-line C-mouse-1] 'tear-off-window)
当您在buffer modeline上按住call键并单击时,这将调用tear-off-window
。
如果您想使用键盘绑定,下面是修改后的tear-off-window
版本。重启emacs后,将其放入init文件中保存。
(bind-key "C-x C-X" #'my/tear-off-window)
(defun my/tear-off-window ()
"Delete the selected window, and create a new frame displaying its buffer."
(interactive)
(let* ((window (selected-window))
(buf (window-buffer window))
(frame (make-frame)))
(select-frame frame)
(switch-to-buffer buf)
(delete-window window)))
在代码中,修改后的命令被绑定到"C-x C-X“。您可以自由地将其更改为任何其他键序列(更多详细信息here)。
https://stackoverflow.com/questions/57304580
复制相似问题