Я возился с рыбой и заметил это полезное поведение.
Если я набирал wget -<tab><tab><tab>
, я попадал в интерактивное меню. Однако, когда я набирал, я искал описания самих аргументов. Я пробовал это в zsh, и ввод в этом меню, похоже, только возвращал меня к интерактивному приглашению. Есть ли способ добиться аналогичной функциональности в zsh?
решение1
Попробуйте вставить это в свой .zshrc
файл:
# load module for list-style selection
zmodload zsh/complist
# use the module above for autocomplete selection
zstyle ':completion:*' menu yes select
# now we can define keybindings for complist module
# you want to trigger search on autocomplete items
# so we'll bind some key to trigger history-incremental-search-forward function
bindkey -M menuselect '?' history-incremental-search-forward
Теперь, если вы наберете, wget -<tab>
появится меню с автодополнениями. Мы определили сочетание клавиш для этого меню, поэтому, если вы нажмете, ?
строка поиска появится поверх автодополнений:
davidsykora~%wget --referer
isearch: refe
Несколько дополнительных советов:
- вы также можете определить
bindkey -M menuselect '/' history-incremental-search-backward
для обратного поиска - если нажать
?
во время поиска еще раз, выбор перейдет к следующему результату поиска. Используйте/
для перехода к предыдущему результату - требуется много настроек, чтобы заставить его работать так, как вам нужно, поэтому взгляните на
complist
документациячтобы найти дополнительные функции и опции - для меня обычно гораздо быстрее использовать
vi-insert
функцию complist - она фильтрует дополнения на основе того, что вы вводите.
решение2
Я думаю, это то, что вам нужно:
zmodload zsh/complist
setopt menucomplete
zstyle ':completion:*' menu select=0 search
В этом случае список будет отображаться при нажатии клавиши Tab, а затем, если вы продолжите вводить текст, будет выполнен поиск доступных вариантов, включая описания, с помощью пошагового поиска.
Вас также может заинтересовать та же конфигурация, но с интерактивным вместо поиска. В этом случае по мере ввода он будет фильтровать дополнения, оставляя только те, которые соответствуют тому, что вы уже ввели.