zsh завершение: отключить s sh завершение имени пользователя - PullRequest
0 голосов
/ 15 февраля 2020

Я использую сценарии завершения, которые поставляются с ZSH (5.7.1), и я хотел бы отключить автозаполнение для имен пользователей, но сохранить завершение для имен хостов.

Как я могу это сделать ?

В настоящее время есть ошибочный пользователь, которого я не могу понять, почему он включен (не в ~ / .ssh / config, в какие-либо удостоверения, / etc / s sh или в любое другое место) и я думаю, что, вероятно, проще просто отключить завершение имени пользователя.

Пример вывода приведен ниже; Я хочу удалить весь раздел «имя для входа», а не пытаться найти источник нежелательного имени пользователя.

$ ssh <tab>
 -- login name --
unwanted-username
 -- host --
example-host-1      example-host-1

Я ожидаю, что есть команда zstyle, которая может отключить ее, но я Я не уверен в правильном заклинании. Я ожидаю, что это соответствующая конфигурация, которую необходимо изменить:

$ zstyle | grep completion | grep ssh
        :completion:*:ssh:* users hosts-domain hosts-host users hosts-ipaddr

Однако, я не могу получить правильное заклинание для удаления секции login name.

1 Ответ

1 голос
/ 15 февраля 2020

Чтобы отключить завершение имен входа, в этом контексте попробуйте:

zstyle ':completion:*:ssh:argument-1:*' tag-order hosts

или просто скрыть их, попробуйте:

zstyle ':completion:*:ssh:*:users' hidden true

Нажав Ctrl-X h вместо tab хороший способ определить релевантные теги и контекстные строки.

Кажется странным, что вы завершили ошибочного пользователя. Проверьте, установлен ли стиль users-hosts, возможно, без упоминания ssh в контексте. Стиль ignored-patterns может быть другим способом справиться с ошибочным совпадением в общем случае, например:

zstyle ':completion:*:ssh:*:users' ignored-patterns erroneous-username

Как вы можете различить из названия стиля, последний аргумент здесь может быть шаблон оболочки с *, ? et c.

...