Create a new file in the directory of the open file in vim?
Solution 1:
From within Vim, new files are created like existing files are edited, via commands like :edit filename
or :split filename
. To persist them to disk, you need to (optionally type in contents and) persist them via :write
.
Like a command prompt, Vim has a notion of current directory (:pwd
lists it). All file paths are relative to it. You don't need to duplicate the path to your current file, there are some nice shortcuts for them: %
refers to the current file, :h
is a modifier for its directory, minus the file name (cp. :help filename-modifiers
). So,
:e %:h/filename
:w
will create a new file named filename
in the same directory as the currently open file, and write it.
Alternatively, some people like Vim to always change to the current file's directory. This can be configured by placing
:set autochdir
into your ~/.vimrc
file (which is read on Vim startup). Then, above becomes simply
:e filename
:w
Finally, Vim has a great built-in :help
. Learn to navigate and search it!
Solution 2:
you should have a try with "nerdtree" plugin. In the nerdtree window, you typed key m, and file operation choices will display to you
Solution 3:
If you want to create a new file and also show it in the window next to your current file, you can try this:
:vsp newfile
The vsp
stands for vertical split
, and it splits the screen in half, one showing your current file, the other showing your new file (also works with just sp
, which is a horizontal split).
Per @MartinLyne's comment above, this will create the file in the directory of the file in which you opened vim
. To adjust for this, you can change the current working directory as follows:
:cd %:p:h
This command changes the current working directory to the directory of the active file, meaning that running the vsp
command (or any of the commands above) will create the file in that directory.
Solution 4:
When you have opened vim in non existent location like $ vim /etc/<some_folder/<next_folder>/file.cfg
then to create a new directory while being inside vim, just run in normal mode :! mkdir -p /etc/<some_folder/<next_folder>
and than save your doc as usual :w :x ZZ
(whatever you like)
that's it
Solution 5:
This is for Gvim! Enter this to see the current directory.
:cd
then change it with
:cd desktop/somefolder
then save or make new file there
:enew asd.cpp
now again see the file
:cd