我想知道如果我修改了它,是否可以刷新一个开放的缓冲区以指向新路径。
前任:
- 在 vim 中打开
./dest1/foo
- 将
foo
移至./dest2/foo
- 更新打开缓冲区以反映新路径
./dest2/foo
,而不是读取/写入旧路径
是的,这是可能的,但并非没有轻微的中断。
- 在 vim 中打开 ./dest1/foo
- 通过按":"进入 vim 的命令模式
- 在提示符下发出以下命令-- !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
。