vim - 在Vim , 重命名当前文件

我应该如何在vim中重命名当前文件。

例如:

  • 我正在编辑person.html_erb_spec.rb
  • 我想把它改名为person.haml_spec.rb
  • 我想继续编辑person.haml_spec.rb
时间:

有一个小插件可以让我们这样做。

命令称为:saveas,但是,不幸的是,它不会删除旧文件,你必须手工执行,有关详细信息,请参阅:help saveas

编辑:

大多数vim安装都有一个集成文件资源管理器,你可以使用它来执行这些操作,在命令模式(我将它映射到一个功能键,非常方便)中尝试:Explore ,例如,你可以使用R重命名文件,或者使用D删除文件,但是,在浏览器中按<F1>会给你一个更好的概述。

如果你使用git,并且已经拥有tpope 的插件fugitive.vim,那么简单地说:

 
:Gmove newname

 

这将:

  1. 在磁盘上重命名文件,
  2. 在git repo中重命名文件,
  3. 将文件重新加载到当前缓冲区中,
  4. 保留撤消历史记录,

如果你的文件还没有添加到git repo,那么首先添加它:

 
:Gwrite

 
  • 编辑时写入文件- :w newname -创建副本,
  • 开始编辑新副本- :e#
  • (可选地)删除旧副本- :rm oldname,!

在Windows上,可选的第三个步骤更改了一点:

  • (可选地)删除旧的Windows副本- :del oldname,!

我建议从tpope 中选择:Rename

它还包含了许多其他方便的命令。

重命名命令的定义如下(检查repo是否有什么更新):!


command! -bar -nargs=1 -bang -complete=file Rename :
 let s:file = expand('%:p') |
 setlocal modified |
 keepalt saveas<bang> <args> |
 if s:file !=# expand('%:p') |
 call delete(s:file) |
 endif |
 unlet s:file

我正在用nerdtree插件制作它


:NERDTreeFind
then press m

接下来你可以选择删除,拷贝,移动等等。


sav person.haml_spec.rb | call delete(expand('#'))

这个(根据建议改进了)怎么样?


:exe "!mv % newfilename" | e newfilename

...