За замовчуванням двигун завершення 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
.