В zsh и bash, если я ls c<TAB>
он отображает каждое имя файла, начинающееся с c. Если вместо этого я ls c*<TAB>
, bash ведет себя так же, но zsh заменяет c*
списком всех файлов, начинающихся с c. Есть ли способ заставить zsh вести себя как bash?
1 ответ
setopt GLOB_COMPLETE
От man zshoptions
:
GLOB_COMPLETE
Когда текущее слово имеет шаблон glob, не вставляйте все слова, являющиеся результатом расширения, но генерируйте совпадения, как для завершения, и просматривайте их, как MENU_COMPLETE. Совпадения генерируются так, как если бы '*' был добавлен в конец слова или вставлен в курсор при установке COMPLETE_IN_WORD. Это на самом деле использует сопоставление с шаблоном, а не сглаживание, поэтому оно работает не только для файлов, но и для любого завершения, такого как параметры, имена пользователей и т.д.
Обратите внимание, что при использовании сопоставителя шаблонов элемент управления сопоставлением (например, сопоставление без учета регистра или привязка привязки) не может использоваться. Это ограничение применяется только тогда, когда текущее слово содержит шаблон; простое включение опции GLOB_COMPLETE не имеет этого эффекта.