如何在 emacs 中创建空文件?
如何从 emacs 创建一个空文件,最好是在一个 dired 缓冲区中?
例如,我刚刚在 dired 模式下打开了一个 Python 模块,创建了一个新目录,在 dired 中打开了该目录,现在需要在该目录中添加一个空的 __init__.py 文件。
如果我使用 Cx Cf __init__.py RET Cx Cs 那么 emacs 不会创建该文件,因为没有对其进行任何更改。我必须输入文件,保存它,删除我输入的内容,然后再次保存它才能工作。
谢谢
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(15)
这是
dired-create-directory
的改编版。它的工作方式相同,因此除了普通文件名之外,您还可以为文件指定新的父目录(在当前目录下创建)(例如foo/bar/filename
)。Here's an adaptation of
dired-create-directory
. It works the same way, so as well as a plain filename, you can also specify new parent directories (to be created under the current directory) for the file (e.g.foo/bar/filename
).Emacs 不允许您保存缓冲区,除非它认为内容已更改。最快(尽管可能不是最干净)的方法是使用 Cx Cf 打开文件,然后按(例如)空格和退格键,然后您应该能够保存没有内容的文件。
还有其他方法可以更改“缓冲区已修改”标志,但我认为没有更简单的方法。
Emacs won't allow you to save a buffer unless it thinks the contents have changed. The quickest, though possibly not cleanest is to open the file using C-x C-f, then press (say) space and backspace, then you should be able to save a file with no contents.
There are other ways of changing the "buffer has been modified" flag, but I don't think there's any easier.
使用触摸命令。
Use touch command.
最短的方法
通过 shell 操作创建一个空文件(但不打开它):
M-!
> __init__.py
RET打开新文件:
Cx Cf RET
(注意:我们不'不必再次输入名称,因为新文件自动成为首选)
The shortest way
Creates an empty file via a shell operation (but does not open it):
M-!
> __init__.py
RETOpen the new file:
C-x C-f RET
(Note: we don't have to type in the name again, because the new file is automatically the first choice)
如果您已经打开了空文件,
(shell-command (concat "touch " (buffer-file-name)))
将执行您想要的操作。(shell-command (concat "touch " (buffer-file-name)))
will do what you want, if you've already opened the empty file.除了页面上的其他答案之外,您还可以使用
f.el
的函数f-touch
:M-:
(f-touch“__init__.py”)
RETIn addition to other answers on the page, you can use
f.el
's functionf-touch
:M-:
(f-touch "__init__.py")
RET您可以通过运行
将空缓冲区标记为已修改设置缓冲区修改-p
。然后当你保存它时,Emacs 将写入该文件。You can mark an empty buffer as modified by running
set-buffer-modified-p
. Then when you save it, Emacs will write the file.我在 dired 中使用以下绑定到
t
的内容。I use the following bound to
t
in dired.我修改了 MrBones 的答案,并使用键绑定创建了自定义函数:
这对于不花时间在新的 Python 项目文件夹中的任何地方创建 init.py 的重复操作非常有用。
I've modified answer from MrBones and created custom function with keybinding:
This is very useful to not spend time on recurring action of creating init.py everywhere in new Python project folder.
最好的选择是:
The best option would be:
您可以使用触摸命令:
You can use the touch command:
以下作品:
如果您位于 Dired 缓冲区中,该文件将保存在此处显示的目录中。
诀窍是首先通过切换到不存在的名称来创建一个空缓冲区。然后写出文件。
The following works:
If you're in a dired buffer the file will be saved in the directory show here.
The trick is to first create an empty buffer by switching to a name that doesn't exist. Then write out the file.
如果您希望 Emacs 将所有新文件视为已修改,您可以像这样自动化解决方案:
If you want Emacs to treat all new files as modified, you can automate the solution like this:
以编程方式且不依赖
touch
,这非常简单:Programatically and without any dependency on
touch
, it's quite easy:在此线程之后,Emacs 添加了两个新命令:
这些命令将在 emacs 27.1 版本中可用。
After this thread, Emacs has added two new commands:
These commands will be available in the emacs 27.1 release.