我经常想通过完成在 zsh 中快速构建一条路径。问题是,当我完成一个片段时,似乎没有好的方法来开始完成下一个片段。例如,假设我有以下结构:
|- apple
|- apricot
|--- banana
|--- blueberry
我想完成路径/apple/blueberry
:
$ cd /ap # <TAB>
$ cd /apple/ # <TAB>
$ cd /apricot/ # <TAB>
$ cd /apple/ # <TAB>
$ cd /apricot/ # ...
问题是,当我尝试完成 on 时/apple/
,它会循环到下一场比赛,而不是开始“新鲜”完成,就像我这样做时会发生的那样:
$ cd /apple/ # <TAB>
$ cd /apple/banana # <TAB>
$ cd /apple/blueberry
我知道我可以输入第一个字符“b”并从此开始一个新的完成,但我不想这样做——我想列出/循环所有子文件/目录。成功完成中间任务后,如何开始新的完成任务?
答案1
输入斜线。当 zsh 完成目录名称时,它会添加一个“暂定”尾随/
.默认情况下,暂定字符以粗体显示。如果您随后键入斜杠或空格,则该暂定斜杠将被删除。因此,如果您在完成目录名称后立即输入斜杠,则会将暂定斜杠转换为“正常”斜杠。由于您已经输入了一些内容,因此目录的完成/apple
已经结束,因此Tab将完成 中的条目/apple/
。