如何使用tab生成我的文件夹中可能的条目列表?

Kim*_*cks 6 bash zsh oh-my-zsh

我在我的Mac和ZSH上使用iTerm,并且在主题上使用了我的zsh dstufft

我写的是我的 .bash_rc

 function goToPythonApp {
        # no params given
        if [ -z "$1" ]; then
            cd ~/Documents/Apps/PythonApps
        else
            cd ~/Documents/Apps/PythonApps/$1
        fi
   }
Run Code Online (Sandbox Code Playgroud)

所以我可以输入 goToPythonApp abc

然后我会切换到 ~/Documents/Apps/PythonApps/abc

但有时,我忘记了文件夹的名称 ~/Documents/Apps/PythonApps/

有没有办法输入goToPythonApp,然后按,<space>然后按下<tab>以生成一个条目列表~/Documents/Apps/PythonApps/

类似于ZSH(或oh-my-zsh)如何为半类命令执行自动完成?

要么我可以输入goToPythonApp ab然后按<tab>,自动完成建议abc哪个是文件夹中的有效条目~/Documents/Apps/PythonApps/

UPDATE

使用下面答案中建议的技术,然后我得到了一个command not found for complete.

然后我在添加autoload bashcompinit && bashcompinit之前添加了.bash_rc file

command not found for complete已经消失,但标签仍然不起作用

che*_*ner 3

在 Zsh 中,你不需要你的函数。将以下内容添加到您的.zshrc文件中:

setopt autocd
pyapps=~/Documents/Apps/PythonApps
Run Code Online (Sandbox Code Playgroud)

autocd让您只需键入目录名称即可更改目录,而无需cd显式使用命令。

静态命名目录(在man zshexpn文件名生成中描述)允许您定义目录的 ~ 前缀别名。只要pyapps不是系统上用户的名称,变量的内容就会替换~pyapps您使用它的任何地方。

结合这两个特点,

  • ~pyapps相当于cd "$pyapps"
  • ~pyapps/Project1相当于cd "$pyapps/Project1"
  • ~pyapps/<TAB>将允许您对 的内容使用制表符补全$pyapps