Vim:如何刷新缓冲区以指向新的文件路径



我想知道如果我修改了它,是否可以刷新一个开放的缓冲区以指向新路径。

前任:

  1. 在 vim 中打开./dest1/foo
  2. foo移至./dest2/foo
  3. 更新打开缓冲区以反映新路径./dest2/foo,而不是读取/写入旧路径

是的,这是可能的,但并非没有轻微的中断。

  1. 在 vim 中打开 ./dest1/foo
  2. 通过按":"进入 vim 的命令模式
  3. 在提示符下发出以下命令-- !mv '%:p' "./dest2/foo">

您现在可能会收到一条消息,指出"文件"foo"不再可用。按回车键或键入命令继续。 按回车键。Vim 现在从新位置重新打开文件。

下一个函数执行您需要的操作:

function Saveas(newfile)                                                 
let oldfile=expand("%:p")                                            
silent! exe 'saveas!' fnameescape(a:newfile)                         
bd #                                                                 
exe 'cd ' . expand('%:h')                                            
call delete(oldfile)                                                 
endfunction                                                              
command! -nargs=1 -complete=dir -complete=file Saveas call Saveas('<args>')

如何使用它:如果当前正在编辑./foo,则可以执行:Saveas ./dest1/foo(假设dest1目录存在(。现在,当前缓冲区将被./dest/foo,而foo将从缓冲区列表中删除。此外,当前目录(pwd(将更新为./dest

注意:文件foo将被删除。将创建一个包含foo内容的新文件./dest1/foo

最新更新