如何删除vim中的当前文件?

如何从vim中删除当前打开的文件? 会很高兴也closures缓冲区。

我看到你可以使用NERDTree ,但是我不使用这个插件。

使用外部工具(如rm (1))很好,但Vim也有自己的delete()函数来删除文件。 这具有便携性的优点。

 :call delete(expand('%')) 

另一种expression方式是:call delete(@%) ,它使用% (当前文件)寄存器(由@accolade提示)。

要完全清除当前缓冲区,磁盘上的文件表示和Vim缓冲区,请附加:bdelete

 :call delete(expand('%')) | bdelete! 

你可能想根据你的喜好来映射它。

看看用Vim命令删除文件 。 评论部分应该有你在找什么:

基本上,Rm会删除当前文件; RM将删除当前文件并一次性退出缓冲区(不保存)。

或者,您可以发出一个shell命令来删除当前文件:

 :!rm % 

有时即使是一个简单的问题,插件也可能是一个有吸引力的解决scheme 在这种情况下,我们很幸运,因为全能的蒂姆·波普有eunuch.vim

eunuch.vim自己的话来说

Vim糖是最需要它的UNIX shell命令。 同时删除或重命名缓冲区和底层文件。 将findlocate加载到quickfix列表中。 等等。

完善。 它有我们所需要的,如果我们在U​​NIX系统上,还有一些额外的工具。

你正在寻找的命令是

 :Remove! 

再次,如果你需要的话重新映射它,例如:nnoremap <Leader>rm :Remove!<CR>

我喜欢能够从vim中删除文件,但是我也是不小心删除了由于某种原因,还没有受版本控制的重要工作。 我发现把@glts和@accolade的前面的信息与这个如何使用confirm命令在退出vim之前进行提示的答案相结合是很有用的。

把它们放在一起,我在我的~/.vimrc添加了一个函数,它在删除文件和closures缓冲区之前会提示,并将其映射到一个组合键:

 nnoremap <Leader>d. :call DeleteFileAndCloseBuffer() fun! DeleteFileAndCloseBuffer() let choice = confirm("Delete file and close buffer?", "&Do it!\n&Nonono", 1) if choice == 1 | call delete(expand('%:p')) | q! | endif endfun 

如果你是一个比我更less偏执的按键,你可以追加<CR>到第一行

 nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()<CR> 

只需按一次返回。

你可以用两个步骤来做到这一点:

  1. 保存为新文件

    :w新文件名

  2. 删除旧文件

    ! rm旧文件名