[emacs] Emacs에서 * scratch * 버퍼를 다시 열겠습니까?

실수 로 Emacs 에서 스크래치 버퍼를 닫은 경우 새 스크래치 버퍼를 어떻게 만듭니 까?



답변

GNU Emacs 기본 바인딩 :

C-xb *scratch* RET

또는 더 장황하게

M-x switch-to-buffer *scratch* RET

*scratch*버퍼 시작시 선택된 버퍼이고, 주요 모드 갖는다 리스프 상호 작용 . 참고 : *scratch*버퍼 모드 는 변수에 의해 제어됩니다 initial-major-mode.

일반적으로 원하는만큼 “스크래치”버퍼를 만들고 원하는 이름을 지정할 수 있습니다.

C-xb NAME RET

NAME존재하지 않는 경우 버퍼로 전환 합니다. C-xC-w(또는 M-x write-file RET)를 사용 하여 파일을 저장해야 할 파일을 선택할 때까지 새 버퍼는 디스크의 파일과 연결되지 않습니다 .

M-x text-mode RET

현재 버퍼의 주 모드를 텍스트 모드로 변경합니다. 사용 가능한 모든 모드를 찾으려면 (즉, 새 패키지없이) 다음을 입력하여 목록을 얻을 수 있습니다.

M-x apropos-command -mode$ RET


답변

내 .emacs에 다음을 추가합니다.

;; bury *scratch* buffer instead of kill it
(defadvice kill-buffer (around kill-buffer-around-advice activate)
  (let ((buffer-to-kill (ad-get-arg 0)))
    (if (equal buffer-to-kill "*scratch*")
        (bury-buffer)
      ad-do-it)))

스크래치 버퍼 를보고 싶지 않다면 Cx Ck을 누르십시오. 그러나 그것을 죽이지 않고 버퍼 목록의 끝에 배치하십시오. 따라서 다음에 새 것을 만들 필요가 없습니다.


답변

이 EmacsWiki 페이지에는 수많은 팁 있습니다.

첫 번째는 다음과 같습니다.

스크래치 버퍼를 재생성하는 매우 간단한 기능 :

(defun create-scratch-buffer nil
   "create a scratch buffer"
   (interactive)
   (switch-to-buffer (get-buffer-create "*scratch*"))
   (lisp-interaction-mode))             


답변

*scratch*iswitchb 모드가 활성화 된 Cx b RET y RET.

*scratch*그렇지 않으면 Cx b RET 만하면 됩니다.


답변

나는 몇 년 전에 처음으로 emacs를 사용하기 시작했습니다. 나는 지금 어디에 있는지 모른다. 그러나 그것은 항상 내 개인 .el 파일에 집이 있었다. Google 검색에서 팝업됩니다.

;;; Prevent killing the *scratch* buffer -- source forgotten
;;;----------------------------------------------------------------------
;;; Make the *scratch* buffer behave like "The thing your aunt gave you,
;;; which you don't know what is."
(save-excursion
  (set-buffer (get-buffer-create "*scratch*"))
  (make-local-variable 'kill-buffer-query-functions)
  (add-hook 'kill-buffer-query-functions 'kill-scratch-buffer))

(defun kill-scratch-buffer ()
  ;; The next line is just in case someone calls this manually
  (set-buffer (get-buffer-create "*scratch*"))

  ;; Kill the current (*scratch*) buffer
  (remove-hook 'kill-buffer-query-functions 'kill-scratch-buffer)
  (kill-buffer (current-buffer))

  ;; Make a brand new *scratch* buffer
  (set-buffer (get-buffer-create "*scratch*"))
  (lisp-interaction-mode)
  (make-local-variable 'kill-buffer-query-functions)
  (add-hook 'kill-buffer-query-functions 'kill-scratch-buffer)

  ;; Since we killed it, don't let caller do that.
  nil)
;;;----------------------------------------------------------------------


답변

나는 dwj의 솔루션을 사용했지만 실제로 스크래치 버퍼의 이름을 바꾸면 (예 : 저장하여) 실패했음을 깨달을 때까지 매우 기뻤습니다 .

그런 다음 이것을 채택하여 나에게 효과적입니다.

  (run-with-idle-timer 1 t
    '(lambda () (get-buffer-create "*scratch*")))


답변

나는이 scratch새로운 스크래치 버퍼를 (내가 몇 가지 갖고 싶은) 열기위한 대화 형 명령으로 :

(defun scratch ()
  "create a new scratch buffer to work in. (could be *scratch* - *scratchX*)"
  (interactive)
  (let ((n 0)
        bufname)
    (while (progn
             (setq bufname (concat "*scratch"
                                   (if (= n 0) "" (int-to-string n))
                                   "*"))
             (setq n (1+ n))
             (get-buffer bufname)))
  (switch-to-buffer (get-buffer-create bufname))
  (if (= n 1) initial-major-mode))) ; 1, because n was incremented

채택 : http://everything2.com/index.pl?node_id=1038451