是否可以对不同的命令使用不同的 zsh 菜单选择行为?

kin*_*ine 13 terminal zsh autocomplete

我正在使用 中的menu select行为zsh,它调用光标下方的菜单,您可以在其中看到各种可能性。我为此设置的 .zshrc 选项是

zstyle ':completion:*' menu select=2
Run Code Online (Sandbox Code Playgroud)

默认情况下,按Return选择此菜单中的可能性只会完成单词——它实际上并不发送命令。例如,我可能会得到这样的菜单

~ % cd de<TAB>
completing directory:
[Desktop/]  Development/
Run Code Online (Sandbox Code Playgroud)

Return这里会导致

~ % cd Desktop/
Run Code Online (Sandbox Code Playgroud)

然后,我必须按Return一个第二时间实际发送命令。

我可以修改此行为以使其同时按下Return两个选择完成通过执行此操作发送命令

bindkey -M menuselect '^M' .accept-line
Run Code Online (Sandbox Code Playgroud)

但是,这有一个问题:有时我需要在发送命令的情况下完成文件或目录。例如,我可能需要这样做ln -s Desktop Desktop2- 使用这种bindkey行为,尝试完成桌面将导致ln -s Desktop/作为命令发送,显然我不希望那样。

我知道只需按空格键就可以让我继续执行命令,但现在已成为一种习惯。
鉴于此,有没有办法让只有某些命令让您按Return一次(例如cd),而所有其他命令都需要按两次?

小智 -1

从技术上讲,按照您要求的方式是不可能的。不知道还有没有其他出路