如何从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>
。您可能需要添加答案。