:saveas newname
сохранит буфер с новым именем, сделает это имя текущим буфером и установит альтернативный буфер для старого файла.
:call delete(expand('#'))
удалит файл, связанный с альтернативным буфером.
Вы можете легко превратить это в команду с чем-то вроде
:command! -bang -complete=file -nargs=+ Rename saveas<bang> <args> | call delete(expand('#'))`
Руководство пользователя содержит подробное описание создания пользовательских команд . Вот объяснение элементов, которые я использую выше.
-bang
позволяет команде вызываться либо Rename
, либо Rename!
, а <bang>
в составленной команде заменяется либо пустой строкой, либо !
, в зависимости от того, как она вызывается. Это используется для поддержки той же функциональности в команде :saveas
.
-complete=file
позволит вам завершить путь, который будет использоваться для нового файла, аналогично :e
и :saveas
do.
-nargs=+
указывает, что :Rename
требует как минимум один аргумент (имя файла), но может принимать больше. <args>
заменяется теми аргументами, которые даны :Rename
. Это позволяет вам указать дополнительные аргументы, которые принимает :saveas
, так что вы можете сделать что-то вроде :Rename ++enc=latin1 newfile
, чтобы переименовать файл в newfile и изменить кодировку на latin1.