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