如何关闭 zsh 中的完成循环?

如何关闭 zsh 中的完成循环?

如何防止 ZSH 循环匹配完成,而是仅在列表中显示剩余可能性的列表?

在我最近安装的操作系统上,按下 Tab 键时,我开始出现 ZSH 循环行为。我不喜欢它,更喜欢它只显示匹配列表。我较旧的操作系统安装有此问题,所以我猜测新版本 Zsh 中的某些默认设置是原因。我尝试在 Google 上搜索,并比较我的环境变量(env输出 - 如果有帮助,我可以将它们包括在内,但它会很长),但我就是找不到正确的设置。

这是我的环境信息:

在以下系统上按预期工作(每次按下 Tab 键时都会列出匹配项)

  • zsh 4.3.12 (i386-apple-darwin11.2.0)Darwin macbookair 11.4.2 Darwin Kernel Version 11.4.2: Thu Aug 23 16:25:48 PDT 2012; root:xnu-1699.32.7~1/RELEASE_X86_64 x86_64 i386 MacBookAir4,2 Darwin
  • zsh 5.1.1 (i686-ubuntu-linux-gnu)Linux nuc2017 4.4.0-96-generic #119-Ubuntu SMP Tue Sep 12 14:58:51 UTC 2017 i686 i686 i686 GNU/Linux
    • 全新安装 Ubuntu
  • zsh 5.0.8 (x86_64-apple-darwin15.0)Darwin Sridhars-Mac-mini.local 15.3.0 Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64 x86_64 i386 Macmini6,1 Darwin

没有按预期工作(每次按下 Tab 键时都会循环显示匹配项)

  • zsh 5.1.1 (x86_64-ubuntu-linux-gnu)Linux nuc 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
    • 从以前的版本升级了我的 Ubuntu
  • OS X Sierra(版本信息不可用 - 它在我的工作电脑上)

我尝试过但没有效果的方法:

unsetopt menu_complete

答案1

答案2

如果你有一个干净的 Zsh 安装并且文件中只有~/.zshrc这个

autoload -Uz compinit && compinit -C

然后当您第一次按下 Tab 键时,它会显示完成列表。

但是,如果你添加

unsetopt AUTO_LIST

那么这种情况就不会再发生并且完成开始立即循环。

要查看此选项是否已取消设置,请执行以下操作

setopt

显示所有与默认值不同的选项。如果输出包含noautolist,则表示AUTO_LIST已取消设置。

相关内容