Vim用户熟悉使用进入和查看当前目录列表
:o .
Run Code Online (Sandbox Code Playgroud)
在这个目录视图中,我们可以提供其他命令,如d和vim将响应"请给出目录名:".这当然允许我们在为vim提供目录名后在当前目录中创建一个新目录.
同样,我们可以通过第一运动我们的光标向下到强调,我们要删除,然后键入特定的目录列表中删除一个空目录d.
问题是,vim不允许我们删除非空目录.
是否有任何方法可以坚持我们删除非空目录?
调用您正在引用的目录视图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)
当然,建议进行大量的仔细测试:).