重命名当前正在Vim中编辑的文件的最简单方法是什么?

时间:2012-01-06 02:13:08

标签: vim

在不弄乱当前拆分配置的情况下,重命名当前正在Vim中编辑的文件的最实用方法是什么?

通常,人们需要...以不同的名称保存文件,删除原始文件,然后重新打开新文件,而不会弄乱当前的布局。

任何人都知道如何在一个命令(功能)或更少的命令中执行此操作?

4 个答案:

答案 0 :(得分:12)

:saveas newname将使用新名称保存缓冲区,将该名称设为当前缓冲区,并将备用缓冲区设置为旧文件。

然后

:call delete(expand('#'))将删除与备用缓冲区关联的文件。

您可以轻松将其转换为类似

的命令
:command! -bang -complete=file -nargs=+ Rename saveas<bang> <args> | call delete(expand('#'))`

user manual提供了有关如何创建user commands的详尽说明。这是我在上面使用的元素的解释。

  • -bang允许命令被调用为RenameRename!,并且构造的命令中的<bang>被空字符串或!替换,取决于它的调用方式。这用于支持:saveas命令中的相同功能。
  • -complete=file会让您标签填写将用于新文件的路径,类似于:e:saveas
  • -nargs=+指定:Rename至少需要一个参数(文件名),但可以占用更多。 <args>被替换为:Rename的任何参数。这允许您指定:saveas接受的额外参数,因此您可以执行类似:Rename ++enc=latin1 newfile的操作,将文件重命名为newfile并将编码更改为latin1。

答案 1 :(得分:3)

Tim Pope有一个插件,其函数:Rename执行此操作:vim-eunuch

您还可以执行以下步骤:

:saveas newfile
:bw <buffer_for_the_old_file>
:!rm old_file

当然这不如在shell中重命名文件那么好。

答案 2 :(得分:2)

使用:Explorer:E调出资源管理器,选择您的文件,然后按r重命名。

答案 3 :(得分:0)

使用eunuch提供的:Move

eunuch还提供其他有用的文件操作,如:Remove,sudoedit。