如何删除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命令。 同时删除或重命名缓冲区和底层文件。 将
find
或locate
加载到quickfix列表中。 等等。
完善。 它有我们所需要的,如果我们在UNIX系统上,还有一些额外的工具。
你正在寻找的命令是
: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>
只需按一次返回。
你可以用两个步骤来做到这一点:
-
保存为新文件
:w新文件名
-
删除旧文件
! rm旧文件名