Varsayılan olarak, zsh'ın tamamlama motoru yalnızca yazdıklarınıza bir şey eklemeye çalışır. Bir önek eklemeyi de deneyecek şekilde yapılandırdınız. Basit etkileşimli tamamlama yapılandırma motoru ( compinstall) bunu “eşleştirme kontrolü → alt dize tamamlama” altında sunar. Bu, aşağıdakine böyle bir satır ekler .zshrc:
zstyle ':completion:*' matcher-list '' 'l:|=* r:|=*'
zstyleYerleşik setleri (çoğunlukla) tamamlama ayarları. matcher-listTamamlama tarzı en az bir maç varken durdurma, arka arkaya denemek için yollar listesidir. Boş dize, varsayılan tamamlama anlamına gelir (yalnızca son ekler). Eşleştirme kontrol büyü l:|=* r:|=*aracı bir önek eşlemeyi denemek *ve bir sonek eşleme *herhangi önek ve sonek, yani.
_Tamamen ile başlayan önekleri yasaklayabilirsiniz . Bu yine de ile başlayan kelimelerin _tamamlanmasına ve bir önek ekleyerek tamamlanmasına izin verir , ancak önek ile başlamayabilir _.
zstyle ':completion:*' matcher-list '' 'l:|=[^_]* r:|=*'
Bu, yalnızca komut adlarının tamamlanması için değil, tüm tamamlamalar için geçerlidir. Bunu komut adlarıyla nasıl sınırlayacağımı bilmiyorum.
Başlayan komut adlarını daha kesin olarak hariç tutmanın bir yolu olmalı _, ancak nasıl yapacağımı bilmiyorum. İlk başlangıç, ignored-patternstamamlama stilidir.
zstyle ':completion:*:*:-command-:*:*' ignored-patterns '_*'
Bu, ile başlayan maçları içermez _; ancak, eşleşme yoksa, zsh yoksay kuralları olmadan tekrar dener. Bunun iyi tarafı, eğer komut ilk etapta alt çizgi ile başlamışsa, bu ikinci geçişte tamamlanacaktır. Kötü tarafı var eğer öyleyse, böylece hiçbir eşleşme yoksa zaten bir alt çizgi eklemeyi deneyin olacağı zsh olduğunu vive viewancak vimo zaman bastıktan Tabsonra viirade teklif vive viewfakat _vimancak yazarsanız vimsonra tamamlama sunacak _vim.