删除vim中的非空目录

时间:2011-08-26 06:48:04

标签: vim

Vim用户熟悉使用

进入和查看当前目录列表
:o .

在此目录视图中,我们可以提供其他命令,例如 d ,vim将以“请给出目录名称:”回复。这当然允许我们在为vim提供目录名后在当前目录中创建一个新目录。

同样,我们可以删除一个空目录,首先将光标向下移动到列表中,该列表强调我们要删除的特定目录并输入 D

问题是,vim不允许我们删除非空目录。

这是坚持我们删除非空目录吗?

2 个答案:

答案 0 :(得分:7)

您所指的目录视图名为netrw。您可以使用:help netrw阅读整个文档,但:help netrw-delete可以访问您在此案例中寻找的内容:

  

g:netrw_rmdir_cmd变量用于支持删除目录。   其默认值为:

     

g:netrw_rmdir_cmd:ssh HOSTNAME rmdir

     

如果使用g:netrw_rmdir_cmd删除目录失败,则netrw将尝试   使用g:netrw_rmf_cmd变量再次删除它。其默认值为:

     

g:netrw_rmf_cmd:ssh HOSTNAME rm -f

因此,您可以覆盖包含删除目录的命令的变量,如下所示:

let g:netrw_rmf_cmd = 'ssh HOSTNAME rm -rf'

编辑:如同指出的那样,这是相当冒险的。如果您需要额外的确认以防目录不为空,您可以编写一个执行提示的shell脚本。一个快速的谷歌提出了这个问题:bash user input if

所以,你可以编写一个这样的脚本:

#! /bin/bash

hostname = $1
dirname  = $2

# ...
# prompt the user, save the result
# ...

if $yes
then
  ssh $hostname rm -rf $dirname
fi

然后,设置命令以执行脚本

let g:netrw_rmf_cmd = 'safe-delete HOSTNAME'

当然,建议进行大量仔细测试:)。

答案 1 :(得分:4)

安德鲁的回答对我不起作用。我找到了另一种解决这个问题的方法。试试:help netrw_localrmdir

我的.vimrc文件中的设置:

let g:netrw_localrmdir="rm -r"