Question

How exactly can I create a new directory using Emacs? What commands do I use? (If possible, please provide an example)

Was it helpful?

Solution

  • to create the directory dir/to/create, type:

    M-x make-directory RET dir/to/create RET
    
  • to create directories dir/parent1/node and dir/parent2/node, type:

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

    It assumes that Emacs's inferior shell is bash/zsh or other compatible shell.

  • or in a Dired mode

    +
    

    It doesn't create nonexistent parent directories.

    Example:

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

    CWD stands for Current Working Directory.

  • or just create a new file with non-existing parent directories using C-x C-f and type:

    M-x make-directory RET RET
    

Emacs asks to create the parent directories automatically while saving a new file in recent Emacs versions. For older version, see How to make Emacs create intermediate dirs - when saving a file?

OTHER TIPS

Ctrl+X D (C-x d) to open a directory in "dired" mode, then + to create a directory.

You can also run single shell commands using M-!

You're basically sending a string to the command line so you don't get any nice auto-completion but it's useful if you know how to perform an action through the command line but don't know an Emacs equivalent way.

M-! mkdir /path/to/new_dir

I guess I did it the hard way earlier today. I did:

M-x shell-command

then

mkdir -p topdir/subdir

You can use M-x make-directory inside of any buffer, not necessarily a dired buffer. It is a lisp function you can use as well.

I came across this question while searching for how to automatically create directories in Emacs. The best answer I found was in another thread from a few years later. The answer from Victor Deryagin was exactly what I was looking for. Adding that code to your .emacs will make Emacs prompt you to create the directory when you go to save the file.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top