Domyślnie silnik uzupełniający zsh próbuje tylko dołączyć coś do tego, co wpisujesz. Skonfigurowałeś go tak, aby również próbował dodać prefiks. Prosty interaktywny silnik konfiguracji uzupełniania ( compinstall
) oferuje to pod „kontrolą dopasowania → uzupełnianiem podciągu”. Powoduje to wstawienie takiego wiersza do .zshrc
:
zstyle ':completion:*' matcher-list '' 'l:|=* r:|=*'
Te zstyle
zestawy wbudowane (w większości) Ustawienia zakończenia. Styl matcher-list
ukończenia to lista sposobów, w jakie można spróbować po kolei, zatrzymując się, gdy jest co najmniej jedno dopasowanie. Pusty ciąg oznacza domyślne zakończenie (tylko przyrostki). Do sterowania dopasowanie Incantation l:|=* r:|=*
środki spróbować dopasowanie prefiksu *
i sufiksu dopasowania *
, tj jakikolwiek prefiks i sufiks.
Możesz zabronić używania prefiksów, które zaczynają się _
całkowicie. Nadal umożliwia to uzupełnianie słów zaczynających się od _
i uzupełnianie przez dodanie prefiksu, ale prefiks może nie zaczynać się _
.
zstyle ':completion:*' matcher-list '' 'l:|=[^_]* r:|=*'
Dotyczy to wszystkich uzupełnień, a nie tylko uzupełnień nazw poleceń. Nie wiem, jak ograniczyć to do nazw poleceń.
Powinien istnieć sposób dokładniejszego wykluczania nazw poleceń rozpoczynających się od _
, ale nie wiem jak. Pierwszym początkiem jest ignored-patterns
styl ukończenia.
zstyle ':completion:*:*:-command-:*:*' ignored-patterns '_*'
Wyklucza to mecze rozpoczynające się od _
; Jeśli jednak nie ma żadnych dopasowań, zsh próbuje ponownie bez reguł ignorowania. Zaletą tego jest to, że jeśli polecenie rozpoczęło się od podkreślenia w pierwszej kolejności, zostanie wykonane w drugim przebiegu. Złe jest to, że w ten sposób będzie starał zsh dodanie podkreślenia w każdym razie, jeśli nie znaleziono żadnego meczu, więc jeśli masz vi
, a view
jednak nie vim
wtedy, naciskając Tabpo vi
ofercie znajdą vi
a view
jednak nie _vim
, ale jeśli wpiszesz vim
następnie ukończenie będzie oferować _vim
.