删除vim中的非空目录

Cal*_*eng 6 vim

Vim用户熟悉使用进入和查看当前目录列表

:o .
Run Code Online (Sandbox Code Playgroud)

在这个目录视图中,我们可以提供其他命令,如d和vim将响应"请给出目录名:".这当然允许我们在为vim提供目录名后在当前目录中创建一个新目录.

同样,我们可以通过第一运动我们的光标向下到强调,我们要删除,然后键入特定的目录列表中删除一个空目录d.

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

是否有任何方法可以坚持我们删除非空目录?

And*_*dev 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'
Run Code Online (Sandbox Code Playgroud)

编辑:像sehe指出的那样,这是相当冒险的.如果您需要额外的确认以防目录不为空,您可以编写一个执行提示的shell脚本.一个快速谷歌出现了这个问题:如果用户输入bash.

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

#! /bin/bash

hostname = $1
dirname  = $2

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

if $yes
then
  ssh $hostname rm -rf $dirname
fi
Run Code Online (Sandbox Code Playgroud)

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

let g:netrw_rmf_cmd = 'safe-delete HOSTNAME'
Run Code Online (Sandbox Code Playgroud)

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