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

Roo*_*ook 5 vim

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

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

任何人都知道如何在一个命令(功能)或更少的命令中做到这一点?

jam*_*san 12

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

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

您可以轻松地将其转换为具有类似功能的命令

:command! -bang -complete=file -nargs=+ Rename saveas<bang> <args> | call delete(expand('#'))`
Run Code Online (Sandbox Code Playgroud)

用户手册提供了如何建立一个全面描述的用户命令.这是我上面使用的元素的解释.

  • -bang允许被称为任一个命令RenameRename!<bang>在构建的命令由一个空串或替换!,这取决于它是如何被调用.这用于支持:saveas命令中的相同功能.
  • -complete=file将让你选项卡完成将用于新文件的路径,类似于:e:saveas做.
  • -nargs=+指定:Rename需要至少一个参数(文件名),但可以采取更多. <args>被赋予的任何参数替换:Rename.这允许您指定:saveas接受的额外参数,因此您可以执行类似:Rename ++enc=latin1 newfile将文件重命名为newfile并将编码更改为latin1的操作.