这可能是一个非常天真的Emacs问题 - 我是新手.
当我在评估lisp表达式时,如果出现错误,调试器会自动出现在另一个窗口中.如果我有*scratch*和*info*open(前者用于尝试lisp而后者用于读取它),则调试器在*info*所在的窗口中打开.此时,我必须切换到那个窗口,然后将其更改回*info*,然后返回*scratch*.(如果我为缓冲区列表执行Cx Cb,也会发生同样的事情.)我猜测必须有一种方法可以在没有这么长的命令序列的情况下关闭该窗口.任何人都可以开导我吗?
至少在我的emacs(22.3)上,当调试器弹出时,它的窗口变为活动窗口.在那里,按下q只是退出调试器,如果这是你想要的.此时,它也会退出递归编辑.
根据我的理解,您希望关闭另一个窗口中的缓冲区而不将光标从当前窗口移开.
我没有任何现有的功能,所以我自己动手.
(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)))
你可以将它绑定到像"Cx K"或其他一些难以按下的键上,这样你就不会误将它按下来.
(global-set-key (kbd "C-x K") 'other-window-kill-buffer)
我用这个很多!(对于帮助缓冲区,编译缓冲区,Grep缓冲区,以及我想要立即关闭的普通旧缓冲区,而不移动点)
我通常使用delete-other-windows
命令.C-x 1
.
这是如此规则,我重新加入F4.
官方文档:http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Window.htmla
HTH
使用获胜者模式,您可以使用键绑定CC左箭头返回上一个窗口配置.当然,这实际上并没有杀死新缓冲区,但它确实隐藏了它.