これは、目的の動作に合わせて zsh 補完関数を編集することで実現できますrm
。
Z シェル補完関数はすべて、システムのどこかに定義されています。OSX では、下にあり/usr/local/zsh/5.0.2/share/zsh/functions
ます。Linux にもおそらく似たようなものがあります。
の補完関数rm
は、 というファイルで定義されています_rm
。かなり小さいです。(興味がある場合は、 の補完がrmdir
で定義されています_directories
)。
の補完を設定するにはrm -r
、次のような行を変更する必要があります。
'(-r -R --recursive)'{-r,-R,--recursive}'[remove directories and their contents recursively]'
この行の末尾の引用符内に追加します。
:*:file:_directories
これは、引数が指定されzsh
たときの補完がで構成される必要があることを示していると確信しています。それらを取得する方法は、関数 (ディレクトリのみを返す) を使用することです。-r
files
files
_directories
(私はまだ私の小さな心を包み込んでいる獣なので、 100%確信はありません).zsh
使用例は次のとおりです。

より明確にするために、変更の差分を次に示します:)
< '(-r -R --recursive)'{-r,-R,--recursive}'[remove directories and their contents recursively]:*:file:_directories'
---
> '(-r -R --recursive)'{-r,-R,--recursive}'[remove directories and their contents recursively]'