我是否错过了 Vim 中的 :mv 命令?

Bol*_*wyn 3 vim

有时我想在编辑文件时重命名文件。例如从.html.xhtml左右。

要在 Vim 中做到这一点,我必须这样做

:saveas new_file
:!rm old_file
Run Code Online (Sandbox Code Playgroud)

是否有内置命令可以让我摆脱:!rm零件?重新输入旧路径和文件名很烦人。

gar*_*ohn 10

不,没有命令可以同时重命名磁盘上的文件和缓冲区。不过,有一些方法可以减少您必须执行的打字量。例如,Vim 会将 % 扩展为当前缓冲区/文件的名称,因此您可以使用

:!mv % new_file
Run Code Online (Sandbox Code Playgroud)

如果 new_file 与 old_file 具有相同的根名称,您可以这样做以仅更改扩展名:

:!mv % %:r.xhtml
Run Code Online (Sandbox Code Playgroud)

where%:r扩展为不带扩展名的当前缓冲区/文件的名称。看

:help filename-modifiers
Run Code Online (Sandbox Code Playgroud)

在磁盘上更改文件名后,您可以将缓冲区更改为该名称

:e new_file
Run Code Online (Sandbox Code Playgroud)

或者

:f new_file
Run Code Online (Sandbox Code Playgroud)

这两个命令都有文件名补全,所以你可以只输入文件名的前几个字母,然后 <tab> 让 Vim 补全文件名。