如何在Emacs中关闭自动打开的窗口?

Ski*_*ick 26 emacs

这可能是一个非常天真的Emacs问题 - 我是新手.

当我在评估lisp表达式时,如果出现错误,调试器会自动出现在另一个窗口中.如果我有*scratch*和*info*open(前者用于尝试lisp而后者用于读取它),则调试器在*info*所在的窗口中打开.此时,我必须切换到那个窗口,然后将其更改回*info*,然后返回*scratch*.(如果我为缓冲区列表执行Cx Cb,也会发生同样的事情.)我猜测必须有一种方法可以在没有这么长的命令序列的情况下关闭该窗口.任何人都可以开导我吗?

Bah*_*bar 24

至少在我的emacs(22.3)上,当调试器弹出时,它的窗口变为活动窗口.在那里,按下q只是退出调试器,如果这是你想要的.此时,它也会退出递归编辑.


spk*_*spk 20

根据我的理解,您希望关闭另一个窗口中的缓冲区而不将光标从当前窗口移开.

我没有任何现有的功能,所以我自己动手.

(defun other-window-kill-buffer ()
  "Kill the buffer in the other window"
  (interactive)
  ;; Window selection is used because point goes to a different window
  ;; if more than 2 windows are present
  (let ((win-curr (selected-window))
        (win-other (next-window)))
    (select-window win-other)
    (kill-this-buffer)
    (select-window win-curr)))
Run Code Online (Sandbox Code Playgroud)

你可以将它绑定到像"Cx K"或其他一些难以按下的键上,这样你就不会误将它按下来.

(global-set-key (kbd "C-x K") 'other-window-kill-buffer)
Run Code Online (Sandbox Code Playgroud)

我用这个很多!(对于帮助缓冲区,编译缓冲区,Grep缓冲区,以及我想要立即关闭的普通旧缓冲区,而不移动点)


Zso*_*kai 14

我通常使用delete-other-windows命令.C-x 1.

这是如此规则,我重新加入F4.

官方文档:http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Window.htmla

HTH


Jam*_*lak 7

使用获胜者模式,您可以使用键绑定CC左箭头返回上一个窗口配置.当然,这实际上并没有杀死新缓冲区,但它确实隐藏了它.


leg*_*cia 5

我认为您正在寻找C-x 4 C-o,它在“其他”窗口中显示缓冲区而不切换到它。

如上所述,在回溯缓冲区的情况下,您可能希望使用 , 退出它q,以退出递归编辑。