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 scratch
jako 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-session
ich 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