How should I rename my current file in Vim?
For example:
person.html_erb_spec.rb
person
Another way is to just use netrw, which is a native part of vim.
:e path/to/whatever/folder/
Then there are options to delete, rename, etc.
Here's a keymap to open netrw to the folder of the file you are editing:
map <leader>e :e <C-R>=expand("%:p:h") . '/'<CR><CR>
You can also use :f followed by :w
The command is called :saveas
, but unfortunately it will not delete your old file, you'll have to do that manually. see :help saveas for more info.
EDIT:
Most vim installations have an integrated file explorer, which you can use for such operations. Try :Explore
in command mode (I would actually map that to a function key, it's very handy). You can rename files with R
or delete them with D
, for example. But pressing <F1>
in the explorer will give you a better overview.
:!mv % %:h/new_name
Register %
contains the name of the current file.'%:h'
shows the directory 'head' containing the current file, e.g.: %:h
returns /abc/def
when your file full path is abc/def/my.txt
How about this (improved by Jake's suggestion):
:exe "!mv % newfilename" | e newfilename
sav person.haml_spec.rb | call delete(expand('#'))