稍微修改这里的答案:
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