ここで答えを少し変更します:
function complete_pwd_items_on_empty_buffer
{
if [[ -z $BUFFER ]]; then
BUFFER="./"
CURSOR=2
zle list-choices
else
zle expand-or-complete
fi
}
zle -N complete_pwd_items_on_empty_buffer
bindkey '^I' complete_pwd_items_on_empty_buffer
./
コマンド ラインが空の状態で TAB キーを押すと、実行可能ファイルまたはディレクトリが挿入され、一覧表示されます。この方法で、現在のディレクトリ ツリーで実行可能ファイルを実行できます。オプションcd
を設定した場合は、この方法でサブディレクトリで実行AUTO_CD
できます。
実際、コマンドラインで空白のみを使用してこのトリックを有効にすることで、それよりも少し良いことができます。
function complete_pwd_items_on_empty_buffer
{
if [[ $BUFFER =~ ^[[:space:]]*$ ]]; then
BUFFER+="./"
CURSOR+=2
zle list-choices
else
zle expand-or-complete
fi
}
zle -N complete_pwd_items_on_empty_buffer
bindkey '^I' complete_pwd_items_on_empty_buffer