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

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

有时我想在编辑文件时重命名它。例如从 到.html等等.xhtml

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

:saveas new_file
:!rm old_file

是否有内置命令可以让我删除该:!rm部分?重新输入旧路径和文件名很烦人。

答案1

你可以定义自己的。例如,将其放入你的 .vimrc 中:

“首先定义一个函数
函数!MoveFunction(新名称)
    " 获取当前文件名
    让 a:oldname = expand("%:p")
    “以新名称保存
    执行“saveas”.a:newname
    “删除旧文件
    调用删除(a:旧名称)
结束函数
“接下来定义一个命令
命令!-nargs=1 MoveTo 调用 MoveFunction(<f-args>)

然后:

:MoveTo <new-name>

应该做你想做的事。

答案2

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

:!mv % new_file

如果 new_file 与 old_file 具有相同的根名称,则可以执行以下操作仅更改扩展名:

:!mv % %:r.xhtml

扩展%:r为当前缓冲区/文件的名称(不带扩展名)。请参见

:help filename-modifiers

一旦在磁盘上更改了文件名,就可以使用以下命令将缓冲区更改为该名称

:e new_file

或者

:f new_file

这两个命令都有文件名补全功能,因此您只需输入文件名的前几个字母,然后按 <tab> 让 Vim 完成名称。

答案3

你可以使用

:!mv old_file new_file

顺便说一句,您必须先保存当前缓冲区!

答案4

(现在?)还有该rename()功能,但随后您必须跟踪指向旧文件名的任何缓冲区以应用:filename

相关内容