69

How can I create an empty file from emacs, ideally from within a dired buffer?

For example, I've just opened a Python module in dired mode, created a new directory, opened that in dired, and now need to add an empty __init__.py file in the directory.

If I use C-x C-f __init__.py RET C-x C-s then emacs doesn't create the file because no changes have been made to it. I would have to type in the file, save it, delete my typing and then save it again for that to work.

Thanks

4

15 に答える 15

60

touch コマンドを使用できます。

M-! touch __init__.py RET
于 2010-04-07T11:51:48.607 に答える
28

以下の作品:

Cx b __init__.py RET Cx Cw RET

dired バッファにいる場合、ファイルはここに示すディレクトリに保存されます。

秘訣は、最初に存在しない名前に切り替えて空のバッファを作成することです。次に、ファイルを書き出します。

于 2010-04-08T18:57:50.713 に答える
20

Emacs にすべての新しいファイルを変更済みとして扱いたい場合は、次のようにソリューションを自動化できます。

(add-hook 'find-file-hooks 'assume-new-is-modified)
(defun assume-new-is-modified ()
  (when (not (file-exists-p (buffer-file-name)))
    (set-buffer-modified-p t)))
于 2010-04-07T12:57:34.637 に答える
13

プログラム的に、 に依存することなく、touch非常に簡単です。

(with-temp-buffer (write-file "path/to/empty/file/"))
于 2014-05-23T14:52:08.723 に答える
13

このスレッドの後、Emacs は 2 つの新しいコマンドを追加しました。

  1. ファイルを空にする
  2. dired-create-empty-file

これらのコマンドは、emacs 27.1 リリースで使用できるようになります。

于 2018-08-02T04:43:14.647 に答える
12

Emacs は、内容が変更されたと判断しない限り、バッファーの保存を許可しません。おそらく最もクリーンではないかもしれませんが、 を使用してファイルを開き、C-x C-f(たとえば) スペースとバックスペースを押すと、内容のないファイルを保存できるはずです。

「バッファが変更されました」フラグを変更する方法は他にもありますが、これほど簡単なことはないと思います。

于 2010-04-07T12:03:50.597 に答える
6

タッチコマンドを使用します。

M-! touch __init__.py RET
于 2012-08-16T15:36:51.647 に答える
5

最短の方法

シェル操作で空のファイルを作成します (ただし、開きません):

M-! > __init__.py RET

新しいファイルを開きます。

C-x C-f RET

(注: 新しいファイルが自動的に最初の選択肢になるため、名前を再度入力する必要はありません)

于 2016-12-02T02:45:42.060 に答える
3

(shell-command (concat "touch " (buffer-file-name)))空のファイルを既に開いている場合は、必要なことが行われます。

于 2012-08-16T15:33:29.337 に答える
2

ページ上の他の回答に加えて、f.elの機能を使用できf-touchます。

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

于 2014-03-18T10:34:25.677 に答える
1

を実行すると、空のバッファを変更済みとしてマークできますset-buffer-modified-p。それを保存すると、Emacs はファイルを書き込みます。

M-;                         ; Eval
(set-buffer-modified-p t)   ; Mark modified
C-x C-s                     ; Save buffer
于 2013-12-05T12:18:31.157 に答える
0

最良のオプションは次のとおりです。

(with-temp-file "filename"
  (insert ""))
于 2016-03-25T13:07:12.937 に答える
0

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)

これは、新しい Python プロジェクト フォルダーのどこにでもinit .pyを作成するという繰り返しのアクションに時間を費やさないようにするのに非常に便利です。

于 2013-08-06T07:52:33.250 に答える