如何将此bash完成函数转换为zsh完成函数?

时间:2016-02-13 00:03:04

标签: bash zsh

如何将此bash完成函数转换为zsh完成函数?

此bash功能允许您选项卡填写当前工作目录上方的目录名称,以便您可以更快速,更准确地向上导航文件层次结构。

示例:

git merge

代码:

$ pwd
/Users/me/Animals/Mammals/Ungulates/Goats/Ibex
$ upto Animals
$ pwd
/Users/me/Animals

我想在zsh中使用类似的一个,但我不完全理解这个工作原理的机制,更不用说如何为zsh修改它。

1 个答案:

答案 0 :(得分:2)

尝试此完成功能

_upto() {
    local parents;
    parents=(${(s:/:)PWD});
    compadd -V 'Parent Dirs' -- "${(Oa)parents[@]}";
 }

使用compdef _upto upto启用它。

通过创建一个deply嵌套文件夹来测试它:f=/tmp/foo/bar/one/two/three;mkdir -p $f;cd $f。输入upto <Tab>应该给出

three  two    one    bar    foo    tmp

要反转目录(即在根目录而不是..处启动提案),请从(Oa)行中删除compadd标记。