Как мне создать пустой файл в Emacs? - PullRequest
60 голосов
/ 07 апреля 2010

Как я могу создать пустой файл из emacs, в идеале из буфера dired?

Например, я только что открыл модуль Python в режиме dired, создал новый каталог, открыл его в diredи теперь нужно добавить в каталог пустой файл __init__.py.

Если я использую C-x C-f __init__.py RET C-x C-s, тогда emacs не создаст файл, потому что в него не было внесено никаких изменений.Я должен был бы напечатать в файле, сохранить его, удалить мой набор текста, а затем сохранить его снова, чтобы это работало.

Спасибо

Ответы [ 15 ]

2 голосов
/ 18 марта 2014

В дополнение к другим ответам на странице вы можете использовать функцию f.el f-touch:

M -: (f-touch "__init__.py") RET

1 голос
/ 08 марта 2018

Я использую следующую привязку к t в Dired.

(defun my-dired-touch (filename)
  (interactive (list (read-string "Filename: " ".gitkeep")))
  (with-temp-buffer
    (write-file filename)))

;; optionally bind it in dired
(with-eval-after-load 'dired
  (define-key dired-mode-map "t" 'my-dired-touch))
1 голос
/ 05 декабря 2013

Вы можете пометить пустой буфер как измененный, запустив set-buffer-modified-p. Затем, когда вы сохраните его, Emacs запишет файл.

M-;                         ; Eval
(set-buffer-modified-p t)   ; Mark modified
C-x C-s                     ; Save buffer
0 голосов
/ 25 марта 2016

Лучший вариант будет:

(with-temp-file "filename"
  (insert ""))
0 голосов
/ 06 августа 2013

Я изменил ответ от MrBones и создал пользовательскую функцию с привязкой клавиш:

; create empty __init__.py at the place
(defun create-empty-init-py()
  (interactive)
  (shell-command "touch __init__.py")
)
(global-set-key (kbd "C-c p i") 'create-empty-init-py)

Это очень полезно, чтобы не тратить время на повторяющиеся действия по созданию init .py везде в новой папке проекта Python.

...