Это очень простой запрос: я хочу создать новый пустой файл, не указывая ему имя (пока). Я могу использовать буфер нуля, но есть только один. Я могу C-x C-f
и открыть новый файл, но тогда я должен указать ему имя и путь. Если я просто пишу заметки для себя или набросаю идеи, я не хочу давать им имя. Как создать новый, пустой, неназванный файл?Как создать новый, неназванный файл в emacs?
ответ
Вы можете создать новый буфер: C-хб и введите имя буфера, и он создаст новый буфер с именем, которое вы выбираете.
Если вы хотите сохранить этот буфер, просто нажмите C-хж создать файл с его содержимым в нужное место.
Моя рекомендация является то, что вы даете org-mode. Он будет делать то, что хочет среди миллионов других вещей.
Дайте ему имя.Просто не сохраняйте его.
Не то, что вы хотели услышать, но это путь Emacs.
Используйте C-x C-f
, указав имя (для-на-файл). Редактируйте текст. Не используйте C-x C-s
для сохранения буфера в файл (т. Е. На диск).
Обратите внимание, что вы можете сначала поставить себя в каталог, содержимое которого вам неинтересно, так что если вы случайно сохраните буфер там, вы можете легко найти, распознать и бросить файл. Чтобы изменить каталоги, вы можете использовать M-x cd
. Или просто сделайте это, отредактировав часть каталога, когда вы сначала используете C-x C-f
. Или используйте C-x d
, чтобы поместить себя в Dired buffer для каталога.
Если вы не хотите рисковать, случайно попав C-x C-s
и тем самым экономя ваши изменения, а затем использовать C-x b
вместо C-x C-f
. Вы (даже здесь) запрашиваете имя буфера. Придавая ему новое имя (а не имя существующего буфера), создается новый буфер. В этом случае, если вы используете C-x C-s
то Emacs запросит у вас местоположение файла, чтобы сохранить буфер в.
Почему вы хотите использовать C-x C-f
вместо C-x b
, если вы не хотите, чтобы сохранить буфер? Предоставление расширения файла в имени файла, которое вы даете, автоматически помещает буфер в соответствующий основной режим (обычно). В противном случае (для C-x b
) вам нужно поместить буфер в желаемый режим.
Буфер *scratch*
по умолчанию используется в режиме Lisp-Interaction, который похож на режим Emacs-Lisp (но не тот же).
В каждом другом текстовом редакторе или текстовом редакторе интуиция заключается в создании «нового файла» или «нового буфера», а не для переключения на отдельный буфер *scratch*
. Например, вы пишете быстрые заметки или мысли в нескольких разных буферах, чтобы отслеживать их, а затем вы решаете, выбросите их или сохраните. Или вы манипулируете фрагментом текста или кода, но вы не хотите менять исходный буфер, поэтому вы просто копируете его в новый временный буфер.
*scratch*
установлен в Lisp режим взаимодействия, но если я хочу, чтобы быстро оценить некоторые Elisp код, я мог бы Eval он работает eval-expression
(Alt +:) или в Elisp интерпретатора IELM (Alt + х Введите ielm). Кроме того, если вы закроете буфер *scratch*
, он не попросит вас его сохранить, чтобы вы могли случайно потерять всю свою работу. Drew's traditional solution кажется слишком субоптимальным. И я не покупаю аргумент, что «так вы делаете это в Emacs». Emacs - настраиваемый редактор, поэтому вы можете и должны создавать любой рабочий процесс для вас.
Вот так ErgoEmacs решает его, покупая создание команды new-empty-buffer
. Вы можете реализовать так:
(defun new-empty-buffer()
"Opens a new empty buffer."
(interactive)
(switch-to-buffer (generate-new-buffer "untitled"))
(funcall initial-major-mode)
(put 'buffer-offer-save 'permanent-local t)
(setq buffer-offer-save t))
Переменная buffer-offer-save
перезагружается каждый раз, когда вы меняете основной режим, поэтому вам нужно аннотировать его с permanent-local
. Он также запрашивает только при выходе из Emacs. Я думаю, что это интуитивно для него также спросить, когда вы закрываете модифицированный буфер untitled
, поэтому см. my solution о том, как обновить kill-buffer
, чтобы запросить перед закрытием модифицированного буфера.
ErgoEmacs полностью обновляет привязки по умолчанию и имеет new-empty-buffer
, связанный с Ctrl + N, как и почти у всех программ. Измените переменную initial-major-mode
, если вы хотите, чтобы новый буфер имел другой режим при запуске.
Смотрите также:
Буфер * не * обязательно файл, который существует на жестком диске - однако, буфер должен иметь имя - - даже '* untitled *' будет считаться именем. – lawlist