ZSH 主机名完成行为改变?

7 zsh

我一直在使用 ZSH 进行主机名补全,并希望更改默认行为。当我有多个名称相似的主机时,完成会做一些我不关心的事情。一个例子是最好的:

假设我有这些主机:

host01.stage.example.com
host02.stage.example.com
host01.prod.example.com
host02.prod.example.com
Run Code Online (Sandbox Code Playgroud)

现在,在我的提示中,我将输入:

$ ssh hos<tab>
Run Code Online (Sandbox Code Playgroud)

zsh 会告诉我:

$ ssh host..example.com 
Run Code Online (Sandbox Code Playgroud)

将光标放在“host”之后,并向我显示一个包含主机名的菜单。我喜欢显示主机名的菜单,我只是不希望它完成所有操作。奇怪的事情发生了。大多数情况下,我必须通过 Tab 键来删除主机名,或者我必须删除该行上的额外内容。

首选方法是不完成主机名的其余部分。就像是:

$ ssh hos<tab>
Run Code Online (Sandbox Code Playgroud)

zsh 希望告诉我:

$ ssh host
host01.stage.example.com  host01.prod.example.com
host02.stage.example.com  host02.prod.example.com
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

Pin*_*oyd 1

您是否更改了 .zshrc 文件中的任何内容?因为当我这样做时

ssh 127<tab>
Run Code Online (Sandbox Code Playgroud)

它给了我正确的建议...光标移动到正确的位置:

ssh 127.0.<cursor>.1
127.0.0.1 127.0.1.1
Run Code Online (Sandbox Code Playgroud)

(第二行是得到的建议)