Jeśli przypadkowo zamknąłem bufor scratch w Emacsie, jak mogę utworzyć nowy bufor scratch?
Jeśli przypadkowo zamknąłem bufor scratch w Emacsie, jak mogę utworzyć nowy bufor scratch?
Odpowiedzi:
Wystarczy odtworzyć bufor poprzez przełączenie do niego: C-x b *scratch* RET. Od Emacsa 21.2, jeśli utworzysz bufor o nazwie *scratch*, to automatycznie przejdzie on w tryb interakcji Lisp .
*scratch*a następnie wrócę do niego, to automatycznie przejdzie w tryb interakcji lisp.
.emacs).
Prawdopodobnie lepiej jest *scratch*automatycznie utworzyć bufor automatycznie za każdym razem, gdy zostanie usunięty, i unikać konieczności ponownego wpisywania jego nazwy.
(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)
Domyślne wiązania GNU Emacs:
C-xb*scratch*
lub bardziej szczegółowo
switch-to-buffer *scratch**scratch*Bufor jest wybrany podczas ładowania, bufor, i jest główną trybu Lisp interakcji . Uwaga: tryb *scratch*bufora jest kontrolowany przez zmienną initial-major-mode.
Zasadniczo możesz utworzyć dowolną liczbę buforów „scratch” i nazwać je, jak chcesz.
C-x bNAME
przełącza się na bufor NAME, tworząc go, jeśli nie istnieje. Nowy bufor nie jest powiązany z plikiem na dysku, dopóki nie użyjesz C-xC-w(lub M-xwrite-file), aby wybrać plik, w którym powinien zostać zapisany.
M-xtext-mode zmienia tryb główny bieżącego bufora na tryb tekstowy.
Aby znaleźć wszystkie dostępne tryby (to znaczy, nie wymagając żadnych nowych pakietów), możesz uzyskać listę, wpisując:
apropos-command-mode$ Lubię używać buforów scratch do wyrzucania rzeczy. Posiadanie tylko jednego jest nieco ograniczające, dlatego mam scratchjako interaktywne polecenie do otwierania nowego bufora scratch (bez względu na to, ile już istnieje):
(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
przyjęte z: http://everything2.com/index.pl?node_id=1038451
M-x recover-sessionich nie odzyskuję. Czy ktoś zmodyfikował to, aby użyć czegoś takiego make-temp-file?
Czy mogę zasugerować utworzenie pustego bufora? Interesujące jest to, że najpierw tworzysz bufor, a następnie zapisujesz go, jeśli naprawdę chcesz.
(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)))
Będziesz musiał ustawić tryb początkowy-główny na seplenienie w swoim pliku init i powinieneś powiązać mój pusty bufor z skrótem jak C-n.
Dzięki uprzejmości ergoemacs