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

时间:2018-05-06 00:44:13

标签: vim filesystems nerdtree

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

前:

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

2 个答案:

答案 0 :(得分:2)

是的,它可能但不是没有轻微的中断。

  1. 在vim中打开./dest1/foo
  2. 按"进入vim的命令模式:"
  3. 在提示符下发出以下命令 - !mv'%:p' " ./ dest2 /富"
  4. 您现在可能会收到一条消息' 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将被删除。 ./dest1/foo的新文件。