我习惯了emacsclient,以便像vim一样快速响应,将emacs放入服务器模式,命令为“emacs --daemon”。但是当我查看一些文件然后按Alt + F4关闭它们时,我发现很多缓冲区都存活起来很烦人。我必须在关闭帧之前明确地杀死缓冲区。
我想知道,如果有办法让emacsclient在这一点上表现得更像一个轻量级的GUI编辑器(例如vim)?
答案 0 :(得分:3)
我认为你在寻找麻烦,但你可以试试这个:
(add-hook 'delete-frame-functions
(lambda (frame)
(let* ((window (frame-selected-window frame))
(buffer (and window (window-buffer window))))
(when (and buffer (buffer-file-name buffer))
(kill-buffer buffer)))))
答案 1 :(得分:2)
我建议您使用命令quit-window
,它正是您想要的(使用前缀参数);它已经是q
special-mode
(即非自插入)缓冲区的绑定。你可以将它绑定到C-f4
,当你输入C-u C-f4
时它会终止缓冲区和框架。
答案 2 :(得分:1)
执行以下操作:
(defun my-kill-buffer-and-frame ()
"kill the current buffer and the current frame"
(interactive)
(when (y-or-n-p "Are you sure you wish to delete the current frame?")
(kill-buffer)
(delete-frame)))
如果你确定你总是想要这样做,你可以摆脱提示:
(defun my-kill-buffer-and-frame ()
"kill the current buffer and the current frame"
(interactive)
(kill-buffer)
(delete-frame))
然后将其绑定到您选择的键上,如下所示:
(global-set-key [(f5)] 'my-kill-buffer-and-frame)
享受!