【问题标题】:Dismiss ZSH completion list after typing a character输入字符后关闭 ZSH 完成列表
【发布时间】:2021-01-24 07:20:39
【问题描述】:

在 Fish shell 中,当你按下 Tab 时,会显示完成列表,如果你再次开始输入,它会被关闭

在我开始输入后,在 ZSH 中,完成菜单仍然显示且无用

有没有办法让 ZSH 自动完成的行为与 Fish 一样,所以在输入后关闭列表?

【问题讨论】:

  • 您有没有为此找到解决方案?如果是这样,请发布它,我很乐意将它放在我的配置中。

标签: macos shell autocomplete zsh


【解决方案1】:

ZSH 5.7.1 没有这种行为。

这是我的 zshrc 中的内容:

autoload -Uz compinit && compinit

source $SOFTWARE_HOME/zinit/bin/zinit.zsh
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
zinit ice depth=1; zinit light romkatv/powerlevel10k
zinit light zdharma/fast-syntax-highlighting
zinit light zsh-users/zsh-completions
zinit light zsh-users/zsh-autosuggestions
zinit light zsh-users/zsh-history-substring-search

setopt glob_complete
setopt menu_complete
zstyle ':completion:*' menu select
bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down
export HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND=(none)

这些是我的选择:

❯ setopt
combiningchars
extendedglob
extendedhistory
globcomplete
histfindnodups
incappendhistory
interactive
login
menucomplete
monitor
promptsubst
pushdsilent
shinstdin
zle

【讨论】:

  • 你的配置好像自动选择第一个补全
  • 是的,你的帖子说你想“自动完成”。 选择列表中的下一项。 关闭完成菜单
  • 不是真的,甚至标题都说在输入一个未完成的字符后解雇
【解决方案2】:

AUTO_MENU :在第二次连续请求完成后自动使用菜单完成,例如通过反复按 Tab 键

MENU_COMPLETE :在不明确的完成时,立即插入第一个匹配项,而不是列出可能性或发出哔哔声。然后当再次请求完成时,删除第一个匹配并插入第二个匹配,以此类推。当没有更多匹配时,再次返回第一个

zsh 默认为 AUTO_MENU。

如果您使用setopt menu_complete 将其更改为 MENU_AUTOCOMPLETE,那么它将几乎像鱼一样工作。

要自动加载此设置,只需将其保存到您的 .zshrc 配置文件中。

如果您想了解有关选项的更多信息,可以转到 zsh 选项手册man zshoptions

【讨论】:

    猜你喜欢
    • 2018-12-14
    • 2021-04-14
    • 2010-10-08
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2013-10-29
    相关资源
    最近更新 更多