Emacsでスクラッチバッファーを誤って閉じた場合、新しいスクラッチバッファーを作成するにはどうすればよいですか?
Emacsでスクラッチバッファーを誤って閉じた場合、新しいスクラッチバッファーを作成するにはどうすればよいですか?
回答:
次のように切り替えて、バッファを再作成しますC-x b *scratch* RET
。Emacs 21.2以降、というバッファを作成すると*scratch*
、自動的にLisp Interactionモードになります。
*scratch*
てからそれに戻ると、自動的にlisp-interactionモードに設定されます。
.emacs
です。絶対的な用語では最近ではなく、私の大部分よりも新しいです)。
*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)
GNU Emacsのデフォルトのバインディング:
C-xb*scratch*
または、より詳細に
switch-to-buffer
*scratch*
*scratch*
バッファは、起動時に選択されたバッファであり、主要なモードがあるLispの相互作用を。注:*scratch*
バッファーのモードは、変数によって制御されますinitial-major-mode
。
一般に、必要な数の「スクラッチ」バッファーを作成し、好きなように名前を付けることができます。
C-x bNAME
buffer NAME
に切り替え、存在しない場合は作成します。保存するファイルを選択するC-xC-w(またはM-xwrite-file
)を使用するまで、新しいバッファはディスク上のファイルに関連付けられません。
M-xtext-mode
現在のバッファのメジャーモードをテキストモードに変更します。
利用可能なすべてのモードを見つける(つまり、新しいパッケージを必要としない)には、次のように入力してリストを取得できます。
apropos-command
-mode$
私はスローアウェイのためにスクラッチバッファを使用するのが好きです。ただし、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
M-x recover-session
回復しなかったため、データを失いました。誰かがこれを次のようなものを使用するように変更しましたmake-temp-file
か?
空のバッファを作成することをお勧めしますか?おもしろいことに、最初にバッファを作成し、本当にしたい場合は後で保存します。
(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
。
エルゴマックスの礼儀