* scratch *バッファーを再度開きます


25

Emacsでスクラッチバッファーを誤って閉じた場合、新しいスクラッチバッファーを作成するにはどうすればよいですか?


特に質問に答えやすい場合は、自分の質問に答えるためだけに質問をしないでください。
エドガーAroutiounian 14

8
@EdgarAroutiounian あなた自身の質問をして、答えても大丈夫です!ただし、プライベートベータ中に簡単な質問をすることは避けてください。プライベートベータはサイトの雰囲気を整えます。
ジル 'SO-悪であるのをやめる' 14

1
@Gillesもちろん、自分の質問に答えることは問題ありませんが、3つの質問を連続して行う場合、それぞれの質問の直後に答えが返ってくるのではなく、疑わしいです。
エドガーAroutiounian 14

2
@ EdgarAroutiounian、Jon Ericsonは、単純なAZの質問に答えてほしいと願っています。ようこそ
ルーク14

2
私はそれが十分に公平だと思います-初心者ユーザーにとっては、スクラッチバッファについて特に特別なものがないことはしばしば明らかではなく、@ Sigmaの答えは非常にきれいです。
マークオーフリック14

回答:


28

次のように切り替えて、バッファを再作成しますC-x b *scratch* RET。Emacs 21.2以降、というバッファを作成すると*scratch*、自動的にLisp Interactionモードになります


なぜ特別な機能が必要なのですか?私にとっては、私が殺し*scratch*てからそれに戻ると、自動的にlisp-interactionモードに設定されます。
Tikhon Jelvis

@TikhonJelvisああ、確かに。古いバージョンではそれができなかったため、この機能があります(変更は21.2から.emacsです。絶対的な用語では最近ではなく、私の大部分よりも新しいです)。
ジル「SO-悪であるのをやめる」14

うん。Emacs 21.2は、私が初めてコンピューターを使用した頃にリリースされました。それはかなり大きな絶対差です;)。
ティコンジャービス14

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*バッファは、起動時に選択されたバッファであり、主要なモードがあるLispの相互作用を。注:*scratch*バッファーのモードは、変数によって制御されますinitial-major-mode


一般に、必要な数の「スクラッチ」バッファーを作成し、好きなように名前を付けることができます。

C-x bNAME

buffer NAMEに切り替え、存在しない場合は作成します。保存するファイルを選択するC-xC-w(またはM-xwrite-file)を使用するまで、新しいバッファはディスク上のファイルに関連付けられません。


M-xtext-mode 現在のバッファのメジャーモードをテキストモードに変更します。

利用可能なすべてのモードを見つける(つまり、新しいパッケージを必要としない)には、次のように入力してリストを取得できます。

  1. M-xapropos-command
  2. 次に入力します: -mode$
  3. そして、押す RET

2

私はスローアウェイのためにスクラッチバッファを使用するのが好きです。ただし、1つだけにすることはいくぶん制限さ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ファイルでinitial-major-modeをlispに設定し、my-empty-bufferをのようなショートカットにバインドする必要がありますC-n

エルゴマックスの礼儀

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.