Как сделать, чтобы zsh-завершение действовало как bash-завершение?

17

Я недавно перешел из bash в zsh (который я использую с "о мой zsh"), но меня раздражает одна вещь:

Когда я нажимаю клавишу табуляции, первое автозаполнение заполняется автоматически, и вам нужно циклически проходить все этапы, нажимая клавишу табуляции несколько раз.

Это отличается от bash, где вам только что показывают список завершений. Если все дополнения имеют одинаковый префикс, то этот префикс заполняется. Вы можете выбрать тот, который вы хотите, продолжая печатать.

Я считаю, что последний вариант предпочтительнее, так как он быстрее набирается, чем выбирается завершение путем повторного нажатия на вкладку.

Есть ли способ заставить zsh Завершение действовать в этом отношении как bash?

вменяемость
источник

Ответы:

18
setopt noautomenu
setopt nomenucomplete

Вам нужны оба из них. Если вы нажмете клавишу Tab достаточное количество раз, вы получите список завершений, но он никогда не добавит никаких символов к тому, что вы набрали до сих пор.

Эяль
источник
3

Я не думаю, что это поведение по умолчанию, но вы можете отключить его с помощью:

setopt +o menucomplete

Другие параметры , которые влияют на это поведение по - разному относятся: autolist, automenu, bashautolist, listambiguous. Смотрите раздел «Завершение» man zshoptionsдля деталей. Вы можете добавить эту команду в свой ~/.zshrcфайл.

Вы можете настроить многие другие вещи в интерактивном режиме, выполнив:

autoload -U compinstall
compinstall

и следуя подсказкам и меню.

В Bash это поведение контролируется связыванием Tabс completeили menu-completeв ~/.inputrc:

"\C-i": complete   # do list completion

или из командной строки или в ~/.bashrc:

bind '"\C-i": menu-complete' # do menu completion
Приостановлено до дальнейшего уведомления.
источник
1
мета-комментарий: как вы получили символ «табуляции», чтобы выглядеть так?
Хороший человек
2
@ Хороший человек:<kbd>Tab</kbd>
Приостановлено до дальнейшего уведомления.