有时我想在编辑文件时重命名它。例如从 到.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
。