我在Emacs窗口中打开了许多缓冲区。我想将其中一个缓冲区移动到一个新窗口中。是否有一个命令可以实现这个功能?
tear-off-window
。请注意,此命令必须与鼠标单击事件相关联。(global-set-key [mode-line C-mouse-1] 'tear-off-window)
当您在缓冲器模型行上按住 Ctrl 并单击时,这将调用 tear-off-window
。
如果您想要使用键盘绑定,则以下是修改后的 tear-off-window
版本。将其放入您的初始化文件中以便在重新启动 Emacs 后保存它。
(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)))
如果我理解正确,您想创建一个新的WM窗口。
Emacs使用略有不同的术语:在GUI环境中通常称为“窗口”的内容,在Emacs中被称为“框架”。在单个框架内,Emacs将其区域细分为单独的“窗口”(换句话说,即使在非GUI环境中,Emacs也充当着“平铺”窗口管理器)。因此,您可以使用C-x 5 2
(或等效的M-x make-frame-command RET
)创建一个新的框架,然后在该框架中使用C-x b <buffer-name> RET
切换到所需的缓冲区。
顺便提一下,您并不是“移动”缓冲区到新的框架中:无论是否存在显示缓冲区的(emacs)窗口,缓冲区都是独立存在的。
tear-off-window
版本保存在哪里?我不明白如何将命令与鼠标单击事件关联起来。请详细说明。 - vineeshvswindow-list
,并删除所有缓冲区为所需缓冲区的窗口。 - yantar92