【发布时间】:2021-08-03 23:53:35
【问题描述】:
如果我写了一些命令行,但我忘记在中间放一些东西,我通常会返回并开始在那里输入
% command --option -s █ --something-else
^ cursor
然后我可能想使用自动完成功能,所以我按 TAB。在我的配置中(我将在下面发布)可能会发生两件事:
- 如果只有一个选项,则会发生预期的行为
(type "lon")
% command --option -s lon█ --something-else
(press TAB)
% command --option -s long_folder/█ --something-else
- 如果有多个选项,第一次按 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