第一个标签完成增强

时间:2015-06-07 22:46:41

标签: zsh completion

自定义zsh允许您只需点击Tab键,然后循环浏览目录。请参阅此answer

这是一个惊人的工作流程改进,但我需要以下方面的帮助:

我怎样才能实现,zsh选项卡完成会显示所有文件和文件夹并让我循环浏览它们? (实际上它只显示没有更多目录要更改的文件。)

此外,当选择是文件而不是文件夹时,它将不会在完成前放置“cd”非常有用。

(我使用系统mime从终端打开文件。)

感谢。

1 个答案:

答案 0 :(得分:2)

略微修改the answer here

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