如何在Emacs中创建目录?

159

我该如何使用Emacs创建新目录? 我需要使用哪些命令?(如果可能,请提供一个示例)

6个回答

219
  • 要创建目录 dir/to/create,输入:

M-x make-directory RET dir/to/create RET

要创建目录dir/parent1/nodedir/parent2/node,请输入:

M-! mkdir -p dir/parent{1,2}/node RET

假定 Emacs 的子进程使用的是 bash/zsh 或者其他兼容的 shell。

  • 或者在 Dired 模式下。

  • +
    

    它不会创建不存在的父目录。

    例子:

    C-x d *.py RET ; shows python source files in the CWD in `Dired` mode
    + test RET     ; create `test` directory in the CWD
    

    CWD代表当前工作目录。

  • 或者使用C-x C-f创建一个带有不存在父目录的新文件,然后键入:

    M-x make-directory RET RET
    

    在最近的Emacs版本中,保存新文件时,Emacs会自动要求创建父目录。有关旧版本,请参见如何使Emacs在保存文件时创建中间目录?


  • 1
    嗨,J.F. Sebastian,当我在shell中创建一个目录时,如何更新目录窗口? - why
    2
    @why: 输入 g。一般使用M-x describe-mode RET (C-h m)来显示当前主模式的文档说明。 - jfs
    1
    非常感谢!但是您的意思是我输入 M-x g 还是 C-x g? - why
    1
    @为什么他指的是单个g。由于dired-mode不是编辑模式,它直接使用单字母命令(好奇的人可以了解一下:在大多数编辑模式中,g绑定到self-insert-command)。 - Vicky Chijwani
    @x-yuri:你输入了 C-x d *.py RET 或者 C-x d /some/path/*.py RET 吗?前者在我的环境中是可行的。 - jfs
    显示剩余2条评论

    51

    Ctrl+X D (C-x d) 用于以"dired"模式打开一个目录,然后按下 + 创建一个目录。


    我假设'+'符号放在新文件路径目录的末尾,对吗? - Ray
    当我执行C-x C-f并输入“+ dirname”时,Emacs会创建一个名为“+ dirname”的文件,而不是创建一个名为“dirname”的目录。我正在使用OSX,我不知道这是否是问题,因为在Linux中这个命令可以正常工作。 - Zeynel
    5
    @Zeynel:你没有看清楚。这里没有C-x C-f。你需要使用**C-x d**进入Dired模式,并访问你想创建子目录的目录。然后按+。就这样了。 - Drew

    9

    您也可以使用M-!运行单个shell命令。

    基本上,您是在将字符串发送到命令行,因此您不会得到任何漂亮的自动完成,但是如果您知道如何通过命令行执行操作,但不知道Emacs等效的方法,则非常有用。

    M-! mkdir /path/to/new_dir
    

    这个有效,输入“g”以更新屏幕内容。 - mistige

    7
    我今天早些时候可能采用了复杂的方式。我做了以下操作:
    M-x shell-command
    

    那么

    mkdir -p topdir/subdir
    

    5

    您可以在任何缓冲区中使用 M-x make-directory 命令,而不一定是在 dired 缓冲区中。这是一个 Lisp 函数,您也可以使用它。


    2
    我在搜索如何在Emacs中自动创建目录时发现了这个问题。我找到的最佳答案是在几年后的另一个线程中。来自Victor Deryagin的答案正是我想要的。将该代码添加到您的.emacs文件中,当您尝试保存文件时,Emacs会提示您创建目录。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接