防止打开不需要的缓冲区

防止打开不需要的缓冲区

我使用 emacs 进行日常 javascript 编辑,在缓冲区之间切换,我使用 Cx LEFT 和 Cx RIGHT,我对此很满意(即使我发现很难知道我正在修改的文件的路径)。

我的问题:

  1. 在启动时我总是有*scratch**Messages*打开,我认为放入(kill-buffer "*scratch*")我的 .emacs 可以解决问题,但事实并非如此,你有建议吗?

  2. 当我打开文件时,我总是执行 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* 缓冲区,所以请确保您不会'不要在工作流程中删除所有缓冲区,否则*划痕*可能会再次恢复活力。

相关内容