我应该如何重命名我的当前文件在Vim?
例如:
我正在编辑person.html_erb_spec.rb 我希望它重命名为person.haml_spec.rb 我想继续编辑person.haml_spec.rb
我该如何优雅地做这件事呢?
我应该如何重命名我的当前文件在Vim?
例如:
我正在编辑person.html_erb_spec.rb 我希望它重命名为person.haml_spec.rb 我想继续编辑person.haml_spec.rb
我该如何优雅地做这件事呢?
当前回答
:!mv % %:h/new_name
寄存器%包含当前文件的名称。'%:h'显示包含当前文件的目录'head',例如:%:hreturns /abc/def,当你的文件完整路径是abc/def/my.txt
其他回答
该命令被称为:saveas,但不幸的是,它不会删除您的旧文件,您必须手动执行。参见:help save获取更多信息。
编辑:
大多数vim安装都有一个集成的文件资源管理器,您可以使用它进行此类操作。尝试:在命令模式下探索(我会将其映射到一个功能键,这非常方便)。例如,可以用R重命名文件,也可以用D删除文件。但是在资源管理器中按<F1>会给你一个更好的概述。
另一种方法是只使用netrw,它是vim的原生部分。
:e path/to/whatever/folder/
然后还有删除、重命名等选项。
下面是打开netrw到你正在编辑的文件文件夹的键图:
map <leader>e :e <C-R>=expand("%:p:h") . '/'<CR><CR>
在Gary Bernhardt的.vimrc中有一个函数处理这个问题。
function! RenameFile()
let old_name = expand('%')
let new_name = input('New file name: ', expand('%'), 'file')
if new_name != '' && new_name != old_name
exec ':saveas ' . new_name
exec ':silent !rm ' . old_name
redraw!
endif
endfunction
map <leader>n :call RenameFile()<cr>
:!mv % %:h/new_name
寄存器%包含当前文件的名称。'%:h'显示包含当前文件的目录'head',例如:%:hreturns /abc/def,当你的文件完整路径是abc/def/my.txt
Vim确实有一个重命名函数,但不幸的是它不保留历史。
在不丢失历史的情况下重命名文件的最简单的操作系统不可知的方法是:
:saveas new_file_name
:call delete(expand('#:p'))
Expand ('#:p')返回旧文件的完整路径。
如果你还想从缓冲区列表中删除旧文件,请使用:bd #。
或者创建一个插件
如果希望使用快速命令重命名文件,请在~/下添加一个新文件。Vim /plugin包含以下内容:
function! s:rename_file(new_file_path)
execute 'saveas ' . a:new_file_path
call delete(expand('#:p'))
bd #
endfunction
command! -nargs=1 -complete=file Rename call <SID>rename_file(<f-args>)
Rename命令可以帮助您快速重命名文件。