Zsh选项卡完成无法正常工作

kyl*_*art 1 shell zsh autocomplete

虽然我过去曾经使用过Oh-My-Zsh,但我这次决定(即设置一台新电脑)我会尽量避免安装它以使事情变得更加精简.现在我正试图挑选Oh-My-Zsh的不敏感制表功能.围绕其源代码库挖掘,我找到了以下行:

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'

我相当有信心这是Oh-My-Zsh按照我的要求执行的行,所以我尝试将它添加到我的.zshrc.重启了我的终端.输入cd desk,然后点击[tab].没有骰子 - 我没有得到cd Desktop/.

以下是整个.zshrc参考:

# pure shell theme
autoload -U promptinit; promptinit
prompt pure

# completion definitions
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'
fpath=(/usr/local/share/zsh-completions $fpath)

# syntax highlighting (must be last line)
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

kyl*_*art 8

只需自动加载并运行compinit.

这是新的.zshrc:

autoload -U compinit promptinit

promptinit
prompt pure

compinit
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'
fpath=(/usr/local/share/zsh-completions $fpath)

source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Run Code Online (Sandbox Code Playgroud)

  • @SEJU尝试命令:`rehash`_(来自[zsh指南](http://zsh.sourceforge.net/Guide/zshguide03.html):命令的存储方式有其他后果。特别是,zsh不会如果它已经知道在哪里可以找到一个新命令,则查找新命令。如果我在上面的示例中将新的 ls 命令放入 /usr/local/bin 中,则 zsh 将继续使用 /bin/ls (假设已经找到它) . 为了解决这个问题,有命令 rehash,它实际上清空了命令哈希表,以便从头开始重新查找命令。)_ (5认同)
  • 您好,在 macOS Catalina 上从 Bash 切换到 Zsh 后,Tab 补全不再对我起作用。显然它在 git 启动的目录中工作,但不在外部。我能做些什么? (3认同)
  • @Jim 这里有正确的答案(至少对我来说) (2认同)