Повторно відкрийте буфер * подряпин *


26

Якщо я випадково закрив буфер подряпин у Emacs, як створити новий буфер нуля?


Будь ласка, не задавайте питань лише для того, щоб відповісти на власні запитання, особливо якщо на них легко відповісти.
Едгар Арутьонійський

8
@EdgarAroutiounian Добре запитати і відповісти на власне питання ! Однак задавати легкі запитання слід уникати під час приватної бета-версії: приватна бета-версія задає тон сайту.
Жил 'ТАК - перестань бути злим'

1
@Gilles Звичайно, відповісти на власні запитання чудово, але це досить підозріло, коли ви ставите 3 питання спиною до спини, на кожне з відповідями відразу після того, як задаєте питання.
Едгар Арутьонійський

2
@EdgarAroutiounian, Джон Еріксон хоче, щоб ми відповіли на прості запитання AZ. Ласкаво просимо
Лука

2
Я думаю, що це досить справедливо - для нового користувача, який часто працює, часто не очевидно, що в буфері подряпин немає нічого особливого , і відповідь @ Sigma є досить акуратною.
Марк Оффлік

Відповіді:


29

Просто заново створити буфер, перемикаючись на нього: C-x b *scratch* RET. Оскільки Emacs 21.2, якщо ви створюєте буфер, який називається *scratch*, він автоматично переводиться в режим Lisp Interaction .


Для чого потрібна спеціальна функція? Для мене, якщо я вбиваю, *scratch*а потім повертаюсь до нього, він встановлюється автоматично в режимі взаємодії lisp.
Тихон Єлвіс

@TikhonJelvis Так, справді. У мене є ця функція, оскільки вона не робила цього в старих версіях (зміна - від 21.2, що не є останнім в абсолютних показниках, але більш пізнім, ніж основна частина моєї .emacs).
Жил 'ТАК - перестань бути злим'

Так. Emacs 21.2 був випущений приблизно в той час, коли я вперше застосував комп'ютер . Це досить велика абсолютна різниця;).
Тихон Єлвіс

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)

4

Прив’язки GNU Emacs за замовчуванням:

C-xb*scratch*

або, більш багатослівно

  1. M-xswitch-to-buffer
  2. Введення тексту: *scratch*
  3. А потім натискання на RETключ.

*scratch*Буфер представляє собою буфер , обраний під час запуску, і має основний режим лісповскіе взаємодії . Примітка: Режим для *scratch*буфера управляється змінною initial-major-mode.


Загалом ви можете створити стільки буферів "подряпин", скільки захочете, і назвати їх, як тільки захочете.

C-x bNAME

перемикається на буфер NAME, створюючи його, якщо його не існує. Новий буфер не асоціюється з файлом на диску, поки ви не скористаєтесь C-xC-w(або M-xwrite-file) для вибору файлу, куди його слід зберегти.


M-xtext-mode змінює основний режим поточного буфера на текстовий режим.

Щоб знайти всі доступні режими (тобто, не вимагаючи нових пакетів), ви можете отримати список, ввівши:

  1. M-xapropos-command
  2. Потім введіть: -mode$
  3. А потім натисніть RET

2

Мені подобається використовувати буфер для подряпин для викидання речей. Маючи лише один, дещо обмежує, тому я маю 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


Я використовую це вже шість тижнів. Чудово, дякую! Але ... Минулої ночі мій комп'ютер з 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, і вам слід прив’язати буфер my-empty до ярлика C-n.

Надано ергоемаками

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.