我想知道如果我修改它是否有可能刷新一个开放缓冲区指向一个新路径。
前:
./dest1/foo
foo
移至./dest2/foo
./dest2/foo
,而不是读取/写入旧路径答案 0 :(得分:2)
是的,它可能但不是没有轻微的中断。
您现在可能会收到一条消息' File" foo"不再被提供。按ENTER或键入命令继续'。按ENTER键。 Vim现在从新位置重新打开文件。
答案 1 :(得分:2)
下一个功能可以满足您的需求:
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
将被删除。 1}}将创建一个内容为./dest1/foo
的新文件。