首页 > 解决方案 > 在 zsh 中使用 _alternative 完成简单的命令

问题描述

终于开始切换到zsh(从bash)......我试图更多地了解完成系统并且可以使用快速指针。我已经能够让其他完成来处理命令参数,但我正在努力解决路径完成。

我使用一个简单的函数 ( cdp) 来跳转到项目目录。我已经设置了一个非常基本的完成脚本,它几乎可以工作。我似乎无法得到我希望的行为。

理想情况下,打字cdp in{tab}会扩展到所有以 开头的项目in,例如:

~/Projects/indigo ~/Projects/instant

相反,我只能得到cdp {tab}路径~/Projects。从那里,它将展开第一级目录。cd一旦项目目录展开,我希望能够运行标准完成。

这是完成脚本,保存_cdp并添加到fpath

#compdef cdp

basedir="$HOME/Projects"

# the function for jumping to directories...
cdp() {
  if [ -z "$1" ] ; then
    cd $basedir
  else
    cd "$1"
  fi
}

# completion helper...
_alternative "directories:user directory:($basedir/*)"

这是非常基本的,我只是想弄清楚下一步该去哪里。任何想法或指示都会很棒。谢谢!

更新

我发现它cdpath可以很好地满足我的大部分需求......知道如何完成这个简单的功能仍然很有趣,但现在至少我有一个使用cdpathand的工作解决方案auto_cd

标签: zshcompletion

解决方案


推荐阅读