如何从vim中从磁盘中删除当前打开的文件?也可以关闭缓冲区。
我看到您可以为此使用NERDTree,但是我不使用此插件。
如何从vim中从磁盘中删除当前打开的文件?也可以关闭缓冲区。
我看到您可以为此使用NERDTree,但是我不使用此插件。
Answers:
r命令!最好使用前缀<Leader>...。
nnoremap <C-Del> :call delete(expand('%'))<CR>但是我不会关闭缓冲区,以防意外发生。那么您仍然有机会保存它。
:call delete(@%)|q!←简短变体(如果您不想映射它)。(缓冲区保留在其中:ls,可以通过:b这种方式恢复;它保留文件名和缓冲区选项,但不保留文件内容。)
:call delete(@%)|bd!和使用:ls!with:b才能恢复。
看一看用Vim命令删除文件。在评论部分应该有你要找的内容:
基本上,Rm会删除当前文件。RM将一次性删除当前文件并退出缓冲区(不保存)。
另外,您可以发出一个shell命令来删除当前文件:
:!rm %
!rm %,有什么办法可以避免在vim返回缓冲区时发出警告?
%)周围加上引号:!rm "%"。
%(文件路径(在vim术语中为“ filename ”),可能是相对的,例如只是文件名)而不是%:p(绝对文件路径),则冒着删除另一目录中同名文件的风险,如果您忘记了:cd那里的教育。因此,强烈建议您使用%:p而不是%如果您将其映射。
有时,即使对于一个简单的问题,插件也可能是有吸引力的解决方案。在这种情况下,我们很幸运,因为全能的Tim Pope拥有eunuch.vim。
用自己的话说,eunuch.vim提供了
最需要UNIX外壳程序命令的Vim sugar。同时删除或重命名缓冲区和基础文件。将a
find或a加载locate到快速修复列表中。等等。
完善。它具有我们需要的东西,如果我们在UNIX系统上,则还有一些其他工具。
您正在寻找的命令是
:Remove!
再次,如果您需要它,请重新映射它,例如:nnoremap <Leader>rm :Remove!<CR>。
mv,mkdir,find等强烈推荐。
我喜欢能够从vim中删除文件,但是对于意外删除由于某种原因尚未受版本控制的重要工作,我也抱有幻想。我发现将@glts和@accolade中的先前信息与有关如何在退出vim之前使用命令进行提示的答案结合起来很有用confirm。
放在一起,我在上添加了一个函数~/.vimrc,该函数在删除文件和关闭缓冲区之前提示,并将其映射到组合键:
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
如果您的按键比我少偏执,则可以<CR>在第一行后面附加
nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()<CR>
只需按一次回车键。
expand('%:p')而不是@%在编写脚本时使用它。(虽然我很高兴您采纳了我的提示:)简短的好处在脚本中是微不足道的。更重要的 %:p是:)会将文件名扩展为完整的绝对路径(它可能已经存在或可能尚未存在)。只需%运行一个小删除同名的文件,在另一个目录中,而不是,危险的,如果你忘记了你:cd编那里。
nnoremap rm :call delete(expand('%')) \| bdelete!<CR>。您可能需要添加答案。