在不弄乱当前拆分配置的情况下,重命名当前正在Vim中编辑的文件的最实用方法是什么?
通常,人们需要...以不同的名称保存文件,删除原始文件,然后重新打开新文件,而不会弄乱当前的布局。
任何人都知道如何在一个命令(功能)或更少的命令中执行此操作?
答案 0 :(得分:12)
:saveas newname
将使用新名称保存缓冲区,将该名称设为当前缓冲区,并将备用缓冲区设置为旧文件。
:call delete(expand('#'))
将删除与备用缓冲区关联的文件。
您可以轻松将其转换为类似
的命令:command! -bang -complete=file -nargs=+ Rename saveas<bang> <args> | call delete(expand('#'))`
user manual提供了有关如何创建user commands的详尽说明。这是我在上面使用的元素的解释。
-bang
允许命令被调用为Rename
或Rename!
,并且构造的命令中的<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。