如何在不被询问的情况下在emacs中销毁缓冲区。
如果当前缓冲区未被修改,则此操作将无需确认即可删除当前可见缓冲区。但如果缓冲区已被修改,则需要您回答 y/n。
(global-set-key [(control x) (k)] 'kill-this-buffer)
我使用这个
(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.
如果不修改缓冲区,它将被清空。
(kill-matching-buffers "*helm")
执行此操作? - alper好的,我在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))
kill-this-buffer
。如果您想将其绑定到某个键,请使用(kill-current-buffer)
而不是(kill-this-buffer)
。有关(kill-this-buffer)
的详细信息,请参阅文档。
...
该命令只能从菜单栏可靠地调用,否则它可能会决定默默地不执行任何操作。
和(kill-current-buffer)
...
这类似于“kill-this-buffer”,但它不必通过菜单栏调用,并且不考虑菜单栏的框架。
因此,我会在我的init.el
中放置以下内容:
(global-set-key (kbd "C-x k") 'kill-current-buffer)
这至少在emacs 26.1中有效。
我使用以下代码 -- 与Noufal的解决方案不同,它会保存缓冲区然后杀掉它。它还会删除窗口,当您有多个子窗口时这很重要 -- 默认情况下,它将删除窗口而不是切换到其他缓冲区。(当然,为了方便使用,您需要将某些键绑定到它上面。)
;; Kill the current buffer immediatly, saving it if needed.
(defvar kill-save-buffer-delete-windows t
"*Delete windows when `kill-save-buffer' is used.
If this is non-nil, then `kill-save-buffer' will also delete the corresponding
windows. This is inverted by `kill-save-buffer' when called with a prefix.")
(defun kill-save-buffer (arg)
"Save the current buffer (if needed) and then kill it.
Also, delete its windows according to `kill-save-buffer-delete-windows'.
A prefix argument ARG reverses this behavior."
(interactive "P")
(let ((del kill-save-buffer-delete-windows))
(when arg (setq del (not del)))
(when (and (buffer-file-name) (not (file-directory-p (buffer-file-name))))
(save-buffer))
(let ((buf (current-buffer)))
(when del (delete-windows-on buf))
(kill-buffer buf))))
(global-set-key (kbd "C-q") kill-save-buffer')
绑定到C-q(或其他键)。 - pprC-q
是个坏主意,因为它是 Emacs 中非常常见的绑定.... - Eli Barzilay(buffer-modified-p)
。 - Eli Barzilay(buffer-modified-p)
代码吗? - ppr
(kill-buffer (current-buffer))
。 - 9000helm
缓冲区中看到这条消息:Buffer *helm for files*已被编辑。是否要杀死?(是或否)
- alper