Öffnen Sie den * scratch * -Puffer erneut


25

Wie erstelle ich einen neuen Arbeitspuffer, wenn ich versehentlich den Arbeitspuffer in Emacs geschlossen habe?


Bitte stellen Sie Fragen nicht nur zum Zweck der Beantwortung Ihrer eigenen Fragen, insbesondere wenn diese leicht zu beantworten sind.
Edgar Aroutiounian

8
@EdgarAroutiounian Es ist in Ordnung , Ihre eigene Frage zu stellen und zu beantworten ! Das Stellen einfacher Fragen sollte jedoch während der privaten Beta vermieden werden: Die private Beta gibt den Ton für die Site an.
Gilles 'SO - hör auf, böse zu sein'

1
@ Gilles Natürlich ist es in Ordnung, Ihre eigenen Fragen zu beantworten, aber es ist ziemlich verdächtig, wenn Sie 3 Fragen hintereinander stellen, jede mit einer Antwort unmittelbar nach dem Stellen der Frage.
Edgar Aroutiounian

2
@EdgarAroutiounian, Jon Ericson möchte, dass wir die einfachen Fragen von AZ beantworten. Willkommen
Luke

2
Ich denke, es ist fair genug - für einen neuen Benutzer ist es oft nicht offensichtlich, dass der Scratch Buffer nichts Besonderes ist , und die Antwort von @ Sigma ist ziemlich ordentlich.
Mark Aufflick

Antworten:


28

Gerade neu erstellen die Puffer von ihm vermittlungs C-x b *scratch* RET. Wenn Sie einen Puffer mit dem Namen Emacs 21.2 erstellen *scratch*, wird er seitdem automatisch in den Lisp-Interaktionsmodus versetzt .


Warum brauchen Sie eine spezielle Funktion? Wenn ich töte *scratch*und dann wieder dorthin wechsle, wird für mich automatisch der Lisp-Interaktionsmodus aktiviert.
Tikhon Jelvis

@TikhonJelvis Ah, in der Tat. Ich habe diese Funktion, weil dies in älteren Versionen nicht der Fall war (die Änderung ist von 21.2, was in absoluten Zahlen nicht aktuell ist, aber aktueller als der Großteil meiner .emacs).
Gilles 'SO- hör auf böse zu sein'

Ja. Emacs 21.2 wurde ungefähr zu der Zeit veröffentlicht, als ich überhaupt zum ersten Mal einen Computer benutzte . Das ist ein ziemlich großer absoluter Unterschied;).
Tikhon Jelvis

7

Es ist wohl besser, den *scratch*Puffer automatisch neu zu erstellen, wenn er gelöscht wird, und seinen Namen nicht erneut eingeben zu müssen.

(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 Standardbindungen:

C-xb*scratch*

oder ausführlicher

  1. M-xswitch-to-buffer
  2. Eingabe: *scratch*
  3. Und dann die RETTaste drücken.

Der *scratch*Puffer ist der beim Start ausgewählte Puffer und hat den Hauptmodus " Lisp-Interaktion" . Hinweis: Der Modus für den *scratch*Puffer wird von der Variablen gesteuert initial-major-mode.


Im Allgemeinen können Sie so viele "Scratch" -Puffer erstellen, wie Sie möchten, und sie benennen, wie Sie möchten.

C-x bNAME

wechselt in den Puffer NAMEund erstellt ihn, wenn er nicht vorhanden ist. Ein neuer Puffer wird keiner Datei auf der Festplatte zugeordnet, bis Sie mit C-xC-w(oder M-xwrite-file) eine Datei auswählen, in der er gespeichert werden soll.


M-xtext-mode Ändert den Hauptmodus des aktuellen Puffers in den Textmodus.

Um alle verfügbaren Modi zu finden (dh ohne neue Pakete zu benötigen), können Sie eine Liste erhalten, indem Sie Folgendes eingeben:

  1. M-xapropos-command
  2. Dann tippe: -mode$
  3. Und dann drücken RET

2

Ich verwende gerne Kratzpuffer für Wegwerfartikel. Nur eine zu haben, ist allerdings etwas einschränkend, daher habe ich scratchals interaktiven Befehl zum Öffnen eines neuen Arbeitspuffers (egal wie viele bereits existieren):

(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

übernommen von: http://everything2.com/index.pl?node_id=1038451


Ich benutze das seit sechs Wochen. Es ist toll, danke! Aber ... Letzte Nacht hat sich mein Windows-Computer neu gestartet. Ich habe Daten aus meinen Zwischenspeichern verloren, da M-x recover-sessiondiese nicht wiederhergestellt werden können. Hat jemand dies geändert, um so etwas zu verwenden make-temp-file?
Daveloyall

1

Darf ich vorschlagen, einen leeren Puffer zu erstellen? Das Interessante ist, dass Sie zuerst den Puffer erstellen und ihn anschließend speichern, wenn Sie es wirklich wollen.

(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)))

Sie müssen den Initial-Major-Modus so einstellen, dass er in Ihrer Init-Datei lispelt, und Sie sollten den My-Empty-Buffer an eine Verknüpfung binden, wie z C-n.

Mit freundlicher Genehmigung von Ergoemacs

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.