원치 않는 버퍼가 열리지 않도록 방지 있으며 이것으로

나는 매일 자바 스크립트 편집을 위해 emacs를 사용하고 버퍼 사이를 전환하기 위해 Cx LEFT와 Cx RIGHT를 사용하고 있으며 이것으로 괜찮습니다 (수정중인 파일의 경로를 알기가 어렵다고하더라도).

내 문제 :

  1. 내가 항상 시작 *scratch*하고 *Messages*열었을 때, (kill-buffer "*scratch*")내 .emacs 를 넣으면 문제가 해결 될 것이라고 생각 했지만 그렇지 않은 경우 제안 사항이 있습니까?

  2. 파일을 열 때 항상 TAB 자동 완성을 수행하므로 *Messages*완료 옵션이 포함 된 새 버퍼를 만들 때마다 이를 만들지 못하게하는 방법 또는 더 나은 방법으로 emacs가 파일을 죽이는 방법 내 선택 했어?

내가 상단에서 말한 것처럼 탐색하면서 “필요한 방식”이 아닌 무언가를하고 있다고 생각되면 의견을 말하십시오.



답변

내가 고칠 때까지 이것은 나를 미쳤다..

이제 흐름을 망칠 스크래치 , 메시지 또는 완료 버퍼가 없습니다 . 즐겨!

이것을 .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)

답변

글쎄 … 그것은 부분적으로 Emacs가 작동하는 방식이지만 일반적으로 전환을 돕기 위해 할 수있는 일이 있습니다.

먼저, Emacs에는 하나 이상의 버퍼가 있어야합니다. 따라서 및를 제거 *scratch*하고 싶더라도 *Messages*원하지 않는 또 다른 버퍼가 남아 있습니다 (또는 Emacs kill-buffer가 해당 버퍼를 다시 작성했기 때문에 마지막 요청을 무시한 지점을 얻습니다 ( b / c 하나의 버퍼가 필요합니다).

따라서 버퍼 전환이 더 의미있는 지점에 도달하는 가장 좋은 방법은 실제로 전환 하려는 버퍼를 보유 하는 것입니다.

이 작업을 마치면 버퍼를 전환하는 데 사용할 수있는 모든 옵션 / 패키지를 확인할 수 있습니다.이 중 대부분은 Emacs Wiki의 SwitchingBuffers 아래에 나열되어 있습니다 . ido꽤 인기가 같습니다 iciclesanything.


답변

누구든지 * scratch * 버퍼 만 제거 하고 * 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 * 버퍼를 생성하므로 작업 과정에서 모든 버퍼를 삭제하지 마십시오. 그렇지 않으면 * scratch *가 다시 활성화 될 수 있습니다.