У меня есть небольшое раздражение от того, как zsh
делаются полные предложения для моих команд.
Если я наберу начало команды, которую я не установил, и нажму, tab
она предложит функцию завершения, которая установлена.
Допустим, я хочу выполнить, vim
но он не установлен, он предложит _vim
.
Есть ли способ отключить это? Или я сделал что-то не так в моей настройке?
Все мои точечные файлы являются публичными на github.com/henrikbjorn/castle
.
zsh
autocomplete
Хенрик Бьёрнсков
источник
источник
Ответы:
По умолчанию механизм завершения zsh только пытается добавить что-то к тому, что вы вводите. Вы настроили его, чтобы попытаться добавить префикс, а также. Простой механизм конфигурации интерактивного завершения (
compinstall
) предлагает это в разделе «управление соответствием → завершение подстроки». Это вставит такую строку в ваш.zshrc
:В
zstyle
встроенных наборах ( в основном) настройка завершения. Стильmatcher-list
завершения - это список способов попробовать подряд, останавливаясь, когда есть хотя бы одно совпадение. Пустая строка означает завершение по умолчанию (только суффиксы). В контроль соответствия INCANTATIONl:|=* r:|=*
средство попробовать соответствие префиксов*
и суффиксов соответствия*
, то есть любой префикс и суффикс.Вы можете запретить префиксы, которые начинаются с
_
всего. Это по-прежнему допускает завершение слов, начинающихся с_
, и завершение путем добавления префикса, но префикс может не начинаться с_
.Это относится ко всем дополнениям, а не только к дополнениям имен команд. Я не знаю, как ограничить это именами команд.
Должен быть способ более точно исключить имена команд, начинающиеся с
_
, но я не знаю как. Первый старт соignored-patterns
стилем завершения.Это исключает совпадения, которые начинаются с
_
; однако, если совпадений нет, zsh пытается снова без правил игнорирования. Преимущество этого в том, что если команда началась с подчеркивания, она будет завершена во втором проходе. Плохая часть является то , что ЗШ, таким образом , попробуйте добавить подчеркивание в любом случае , если нет совпадений, поэтому если у вас естьvi
и ,view
но неvim
затем , нажав Tabпослеvi
предложитvi
и ,view
но не_vim
, но если вы печатаете ,vim
то завершение будет предлагать_vim
.источник
ignore-patterns
сработало для меня просто отлично, даже если совпадений нет. Просто нужно было убедиться, чтоcompleter
не содержит_ignored
.