![防止打开不需要的缓冲区](https://linux22.com/image/17617/%E9%98%B2%E6%AD%A2%E6%89%93%E5%BC%80%E4%B8%8D%E9%9C%80%E8%A6%81%E7%9A%84%E7%BC%93%E5%86%B2%E5%8C%BA.png)
我使用 emacs 进行日常 javascript 编辑,在缓冲区之间切换,我使用 Cx LEFT 和 Cx RIGHT,我对此很满意(即使我发现很难知道我正在修改的文件的路径)。
我的问题:
在启动时我总是有
*scratch*
并*Messages*
打开,我认为放入(kill-buffer "*scratch*")
我的 .emacs 可以解决问题,但事实并非如此,你有建议吗?当我打开文件时,我总是执行 TAB 自动完成,所以每次我创建一个
*Messages*
包含完成选项的新缓冲区时,如何防止它创建,或者更好的是,在我完成之后如何让 emacs 杀死它做出了我的选择?
如果您认为我正在做的事情不符合我在顶部所说的“应有的方式”,请说出您的意见。
答案1
这让我发疯......直到我修复它。
现在没有了划痕,消息, 或者完成情况缓冲与您的流程发生冲突。享受!
将其放入您的 .emacs 中:
;; Makes *scratch* empty.
(setq initial-scratch-message "")
;; Removes *scratch* from buffer after the mode has been set.
(defun remove-scratch-buffer ()
(if (get-buffer "*scratch*")
(kill-buffer "*scratch*")))
(add-hook 'after-change-major-mode-hook 'remove-scratch-buffer)
;; Removes *messages* from the buffer.
(setq-default message-log-max nil)
(kill-buffer "*Messages*")
;; Removes *Completions* from buffer after you've opened a file.
(add-hook 'minibuffer-exit-hook
'(lambda ()
(let ((buffer "*Completions*"))
(and (get-buffer buffer)
(kill-buffer buffer)))))
;; Don't show *Buffer list* when opening multiple files at the same time.
(setq inhibit-startup-buffer-menu t)
;; Show only one active window when opening multiple files at the same time.
(add-hook 'window-setup-hook 'delete-other-windows)
奖金:
;; No more typing the whole yes or no. Just y or n will do.
(fset 'yes-or-no-p 'y-or-n-p)
答案2
嗯...这在一定程度上是 Emacs 的工作方式,但是您可以采取一些措施来帮助进行总体切换。
首先,Emacs 必须至少有一个缓冲区。因此,即使您想摆脱*scratch*
and *Messages*
,您也会留下另一个您不想要的缓冲区(或者您会发现 Emacs 忽略了您的最后一个kill-buffer
请求,因为它正在重新创建该缓冲区( b/c 它需要一个缓冲区)。
因此,达到切换缓冲区更有意义的最佳方法是实际拥有缓冲区想切换到。
并且,当您完成此操作后,您可以查看可用于切换缓冲区的所有选项/包 - 其中许多都列在 Emacs Wiki 的切换缓冲器。 ido
非常受欢迎, 和 也是icicles
如此anything
。
答案3
如果有人有兴趣仅删除*临时*缓冲区并留下 *Messages* 缓冲区,这段代码对我有用:
(defun acg-initial-buffer-choice ()
(if (get-buffer "*scratch*")
(kill-buffer "*scratch*"))
(get-buffer "*Messages*"))
(setq initial-buffer-choice 'acg-initial-buffer-choice)
您应该记住的一件事是,如果任何时候 Emacs 没有任何缓冲区可显示(例如您杀死了所有缓冲区),它会创建一个 *scratch* 或 *Messages* 缓冲区,所以请确保您不会'不要在工作流程中删除所有缓冲区,否则*划痕*可能会再次恢复活力。