我应该如何重命名我的当前文件在Vim?

例如:

我正在编辑person.html_erb_spec.rb 我希望它重命名为person.haml_spec.rb 我想继续编辑person.haml_spec.rb

我该如何优雅地做这件事呢?


当前回答

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命令可以帮助您快速重命名文件。

其他回答

在编辑时写入文件-:w newname -以创建一个副本。 开始编辑新副本-:e#。 (可选)删除旧副本-:!rm oldname。

在Windows上,可选的第三步略有变化:

(可选)删除旧的Windows副本-:!德尔oldname。

Tim Pope设计了一个更大的插件vim-eunuch,它包含了重命名函数和其他一些功能(删除、查找、保存所有、chmod、sudo编辑等等)。

使用vim-eunuch重命名文件。

:请确保移动

相对于rename.vim:

:重命名!)请

节省了一些按键:)

在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>

这样怎么样(经过杰克的建议改进):

:exe "!mv % newfilename" | e newfilename

要重命名现有文件而不使用插件,您应该使用命令

:Explore

这个命令允许您浏览文件。目录,删除或重命名它们。然后你应该在资源管理器中导航到必要的文件,而不是键入R命令,这将允许你重命名文件名