1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-02 22:58:01 +00:00
Files
til/vim/create-a-new-file-in-a-new-directory.md

39 lines
1.2 KiB
Markdown

# Create A New File In A New Directory
From within a vim session, if you create a buffer for a new file in a
directory that doesn't exist. For instance, let's say that `/features`
doesn't exist and the new file is `my_latest_feature_spec.rb`:
```
:e spec/features/my_latest_feature_spec.rb
```
Vim's command line will inform you that this is a buffer for a `[New
DIRECTORY]`. If you then make some changes and subsequently try to save the
file, Vim will present you with:
```
"spec/features/my_latest_feature_spec.rb" E212: Can't open file for writing
```
This is because the containing directory doesn't exist. You can quickly
create that directory with a combination of Vim filename shorthands and
shelling out to the `mkdir` command.
```
:!mkdir -p %:h
```
The `%` is shorthand for the qualified path of the current file. The `:h` is
a filename modifier that returns the *head of the filename*, that is, it
resolves to the path with everything except the name of the file.
Thus, this command is essentially resolving to:
```
:!mkdir -p spec/features/
```
Vim will shell out with this command making directories for all non-existent
directories in the given path. Now you can happily save your new file.