2014-11-17 3 views
1

Это очень простой запрос: я хочу создать новый пустой файл, не указывая ему имя (пока). Я могу использовать буфер нуля, но есть только один. Я могу C-x C-f и открыть новый файл, но тогда я должен указать ему имя и путь. Если я просто пишу заметки для себя или набросаю идеи, я не хочу давать им имя. Как создать новый, пустой, неназванный файл?Как создать новый, неназванный файл в emacs?

+1

Буфер * не * обязательно файл, который существует на жестком диске - однако, буфер должен иметь имя - - даже '* untitled *' будет считаться именем. – lawlist

ответ

7

Вы можете создать новый буфер: C-хб и введите имя буфера, и он создаст новый буфер с именем, которое вы выбираете.

Если вы хотите сохранить этот буфер, просто нажмите C-хж создать файл с его содержимым в нужное место.

Моя рекомендация является то, что вы даете org-mode. Он будет делать то, что хочет среди миллионов других вещей.

4

Дайте ему имя.Просто не сохраняйте его.

Не то, что вы хотели услышать, но это путь 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 (но не тот же).

3

В каждом другом текстовом редакторе или текстовом редакторе интуиция заключается в создании «нового файла» или «нового буфера», а не для переключения на отдельный буфер *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, если вы хотите, чтобы новый буфер имел другой режим при запуске.

Смотрите также: