有没有办法在Vim中移动文件?例如。我在Vim中打开了一个文件foo / bar.txt。我知道有两种方法来移动这个文件:
第一个解决方案:
:bd bar.txt
mv foo/bar.txt foo/bar2.txt
:e foo/bar2.txt
第二个解决方案:
但这两种解决方案令人尴尬。我知道,有一个用于重命名文件vim-enuch的插件,但是没有用于执行此类基本功能的Vim方法吗?
答案 0 :(得分:27)
您还可以使用netrw(默认文件资源管理器)重命名功能。
:E
/
进行搜索(例如/bar.txt
)R
。然后,系统将提示您输入新的文件路径。完成输入文件路径后,点击<CR>
<CR>
虽然此解决方案可能不如使用vim-eunch快,但它确实允许您在重命名文件时查看项目的结构。这也允许您一次移动多个文件。
进一步阅读:help netrw-move
答案 1 :(得分:6)
没有原子方法来移动这样的文件,但这应该是关闭的:
function! MoveFile(newspec)
let old = expand('%')
" could be improved:
if (old == a:newspec)
return 0
endif
exe 'sav' fnameescape(a:newspec)
call delete(old)
endfunction
command! -nargs=1 -complete=file -bar MoveFile call MoveFile('<args>')
现在你可以说:
:MoveFile file2.txt
重命名为file2.txt
:MoveFile %.0
将file2.txt移动到file2.txt.0
答案 2 :(得分:4)
如果你在bar.txt缓冲区中:
:w bar2.txt
:!rm bar.txt
如果 bar2.txt 已存在于当前目录中,请使用:w!
。