Jestem trochę irytujący tym, jak zsh
robi się kompletne sugestie dotyczące moich poleceń.
Jeśli wpiszesz początek polecenia, którego nie zainstalowałem i naciśnie tab
go, zasugeruje zainstalowaną funkcję uzupełniania.
Powiedzmy, że chcę wykonać, vim
ale nie jest zainstalowany, to zasugeruje _vim
.
Czy można to wyłączyć? A może zrobiłem coś złego w mojej konfiguracji?
Wszystkie moje pliki dot są publiczne w github.com/henrikbjorn/castle
.
zsh
autocomplete
Henrik Bjørnskov
źródło
źródło
Odpowiedzi:
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
:Te
zstyle
zestawy wbudowane (w większości) Ustawienia zakończenia. Stylmatcher-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 Incantationl:|=* 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ę_
.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 jestignored-patterns
styl ukończenia.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 maszvi
, aview
jednak nievim
wtedy, naciskając Tabpovi
ofercie znajdąvi
aview
jednak nie_vim
, ale jeśli wpiszeszvim
następnie ukończenie będzie oferować_vim
.źródło
ignore-patterns
działa dla mnie dobrze, nawet jeśli nie ma żadnych dopasowań. Musiałem tylko upewnić się, żecompleter
nie zawiera_ignored
.