如何在没有回答确认的情况下杀死emacs中的缓冲区?

Tal*_*Kit 27 emacs

如何在没有被质疑的情况下杀死emacs中的缓冲区.

xev*_*ent 29

除非已修改缓冲区,否则这将在不确认的情况下终止当前可见缓冲区.在最后一种情况下,您必须回答y/n.

(global-set-key [(control x) (k)] 'kill-this-buffer)
Run Code Online (Sandbox Code Playgroud)

  • progo,有什么副作用? (2认同)

Nou*_*him 6

我用这个

(defun volatile-kill-buffer ()
   "Kill current buffer unconditionally."
   (interactive)
   (let ((buffer-modified-p nil))
     (kill-buffer (current-buffer))))

(global-set-key (kbd "C-x k") 'volatile-kill-buffer)     ;; Unconditionally kill unmodified buffers.
Run Code Online (Sandbox Code Playgroud)

除非修改,否则它将杀死缓冲区。

  • (let(((buffer-modified-p nil))无效。它是一个函数。不能将其与“ let”绑定。 (5认同)

Lin*_*ver 5

好的,我在Emacs手册中做了一些查找,找到了一个可行的解决方案(从Emacs 23.4.1开始)。这几乎与Noufal的解决方案相同:

(defun kill-this-buffer-volatile ()
    "Kill current buffer, even if it has been modified."
    (interactive)
    (set-buffer-modified-p nil)
    (kill-this-buffer))
Run Code Online (Sandbox Code Playgroud)

我对该函数进行了重命名,使其更接近于kill-this-buffer

显然,EmacsWiki在http://www.emacswiki.org/emacs/KillBufferUnconditionally(在2007年进行了修改)上有一个有关此主题的页面,但是代码只是Noufal的一个副本。