【问题标题】:zsh’s tab completion overwrites what's nextzsh 的 tab 补全会覆盖接下来的内容
【发布时间】:2021-08-03 23:53:35
【问题描述】:

如果我写了一些命令行,但我忘记在中间放一些东西,我通常会返回并开始在那里输入

% command --option -s █  --something-else
                      ^ cursor

然后我可能想使用自动完成功能,所以我按 TAB。在我的配置中(我将在下面发布)可能会发生两件事:

  1. 如果只有一个选项,则会发生预期的行为
(type "lon")
% command --option -s lon█  --something-else
(press TAB)
% command --option -s long_folder/█  --something-else
  1. 如果有多个选项,第一次按 TAB 将显示一个选项列表,并且任何箭头键都会在命令行中写入第一个选项。不幸的是,如果我这样做,以下文本不会被移动而是被覆盖
% command --option -s lon█  --something-else
(press TAB)
interactive: lon[]
long_folder/  loong_folder/  whatever/
(press arrow down)
% command --option -s long_folder/█hing-else

如您所见,按 TAB 会覆盖部分接下来的内容。如何避免这种情况?


.zshrc的相关部分

autoload -Uz compinit
compinit

setopt noautomenu
setopt globcomplete
bindkey '^i' complete-word
setopt nolisttypes

zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' menu yes select interactive

最后一行是造成这种行为的原因。

【问题讨论】:

    标签: zsh tab-completion completion


    【解决方案1】:

    我可以确认这是 zsh 中的一个错误。我已经在Z Shell mailing list 上提交了一份关于它的错误报告。

    【讨论】:

    • 非常感谢,希望它尽快修复。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2017-02-18
    相关资源
    最近更新 更多