По умолчанию механизм завершения zsh только пытается добавить что-то к тому, что вы вводите. Вы настроили его, чтобы попытаться добавить префикс, а также. Простой механизм конфигурации интерактивного завершения ( compinstall
) предлагает это в разделе «управление соответствием → завершение подстроки». Это вставит такую строку в ваш .zshrc
:
zstyle ':completion:*' matcher-list '' 'l:|=* r:|=*'
В zstyle
встроенных наборах ( в основном) настройка завершения. Стиль matcher-list
завершения - это список способов попробовать подряд, останавливаясь, когда есть хотя бы одно совпадение. Пустая строка означает завершение по умолчанию (только суффиксы). В контроль соответствия INCANTATION l:|=* r:|=*
средство попробовать соответствие префиксов *
и суффиксов соответствия *
, то есть любой префикс и суффикс.
Вы можете запретить префиксы, которые начинаются с _
всего. Это по-прежнему допускает завершение слов, начинающихся с _
, и завершение путем добавления префикса, но префикс может не начинаться с _
.
zstyle ':completion:*' matcher-list '' 'l:|=[^_]* r:|=*'
Это относится ко всем дополнениям, а не только к дополнениям имен команд. Я не знаю, как ограничить это именами команд.
Должен быть способ более точно исключить имена команд, начинающиеся с _
, но я не знаю как. Первый старт со ignored-patterns
стилем завершения.
zstyle ':completion:*:*:-command-:*:*' ignored-patterns '_*'
Это исключает совпадения, которые начинаются с _
; однако, если совпадений нет, zsh пытается снова без правил игнорирования. Преимущество этого в том, что если команда началась с подчеркивания, она будет завершена во втором проходе. Плохая часть является то , что ЗШ, таким образом , попробуйте добавить подчеркивание в любом случае , если нет совпадений, поэтому если у вас есть vi
и , view
но не vim
затем , нажав Tabпосле vi
предложит vi
и , view
но не _vim
, но если вы печатаете , vim
то завершение будет предлагать _vim
.