* 스크래치 * 버퍼 다시 열기


25

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


자신의 질문에 답하기 위해, 특히 질문에 대답하기 쉬운 경우에만 질문하지 마십시오.
Edgar Aroutiounian

8
@EdgarAroutiounian 그것은 당신의 자신의 질문에 대답하고 괜찮습니다 ! 그러나 비공개 베타 기간 동안 쉬운 질문을하는 것은 피해야합니다. 비공개 베타는 사이트의 분위기를 설정합니다.
Gilles 'SO- 악마 그만'

1
@Gilles 물론 자신의 질문에 대답하는 것은 좋지만, 질문을 한 직후에 답이있는 3 개의 질문을 다시 연속으로 작성할 때 오히려 의심됩니다.
Edgar Aroutiounian

2
@EdgarAroutiounian 인 Jon Ericson은 간단한 AZ 질문에 답하기를 원합니다. 환영
누가 2

2
나는 그것이 공평하다고 생각합니다. 새로운 사용자에게는 스크래치 버퍼에 특별한 것이 없다는 것이 분명하지 않으며 @Sigma의 대답은 매우 깔끔합니다.
Mark Aufflick

답변:


28

버퍼로 전환하여 버퍼를 다시 만드십시오 C-x b *scratch* RET. Emacs 21.2부터라는 버퍼를 생성하면 *scratch*자동으로 Lisp Interaction 모드로 들어갑니다 .


왜 특별한 기능이 필요합니까? 나를 위해 죽인 *scratch*다음 다시 전환하면 lisp 상호 작용 모드로 자동 설정됩니다.
Tikhon Jelvis

@TikhonJelvis 아, 참으로. 이전 버전에서는이 기능을 수행하지 않았기 때문에이 기능이 있습니다 (변경 사항은 21.2에서 변경되었습니다.이 용어는 절대 용어로는 최근이 아니지만 대량의 것보다 최신입니다 .emacs).
Gilles 'SO- 악마 그만'

네. 이맥스 21.2는 컴퓨터를 처음 사용할 때쯤에 출시되었습니다 . 그것은 절대적으로 큰 차이입니다;).
Tikhon Jelvis

7

*scratch*버퍼가 삭제 될 때마다 자동으로 버퍼를 다시 만들고 이름을 다시 입력하지 않는 것이 더 좋습니다 .

(defun prepare-scratch-for-kill ()
  (save-excursion
    (set-buffer (get-buffer-create "*scratch*"))
    (add-hook 'kill-buffer-query-functions 'kill-scratch-buffer t)))

(defun kill-scratch-buffer ()
  (let (kill-buffer-query-functions)
    (kill-buffer (current-buffer)))
  ;; no way, *scratch* shall live
  (prepare-scratch-for-kill)
  ;; Since we "killed" it, don't let caller try too
  nil)

(prepare-scratch-for-kill)

3

GNU Emacs 기본 바인딩 :

C-xb*scratch*

또는 더 장황하게

  1. M-xswitch-to-buffer
  2. 타자: *scratch*
  3. 그런 다음 RET열쇠를 누르십시오.

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


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

C-x bNAME

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


M-xtext-mode 현재 버퍼의 주 모드를 텍스트 모드로 변경합니다.

사용 가능한 모든 모드를 찾으려면 (즉, 새 패키지없이) 다음을 입력하여 목록을 얻을 수 있습니다.

  1. M-xapropos-command
  2. 그런 다음 다음을 입력하십시오. -mode$
  3. 그런 다음 RET

2

나는 버리는 물건에 스크래치 버퍼를 사용하고 싶습니다. 그래도 하나만 갖는 것이 다소 제한적이므로 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


나는 이것을 6 주 동안 사용해왔다. 감사합니다! 하지만 ... 어제 밤에 내 Windows 컴퓨터가 다시 시작되었습니다. 스크래치 버퍼에서 데이터를 잃어 버렸습니다 M-x recover-session. 복구하지 않기 때문 입니다. 누구든지 이것을 사용하여 이것을 수정 make-temp-file했습니까?
daveloyall

1

빈 버퍼를 만들 것을 제안 할 수 있습니까? 흥미로운 점은 버퍼를 먼저 만들고 원하는 경우 나중에 저장한다는 것입니다.

(defun my-empty-buffer () 
  "Open a new empty buffer."
  (interactive)
  (let ((buf (generate-new-buffer "untitled")))
    (switch-to-buffer buf)
    (funcall (and initial-major-mode))
    (setq buffer-offer-save t)))

초기 파일 모드를 init 파일에서 lisp로 설정해야하고 my-empty-buffer를 다음과 같은 바로 가기에 바인딩해야합니다 C-n.

인체 공학적 의례

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.