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:|=*'
zstyle
Yerleşik setleri (çoğunlukla) tamamlama ayarları. matcher-list
Tamamlama 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-patterns
tamamlama 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 vi
ve view
ancak vim
o zaman bastıktan Tabsonra vi
irade teklif vi
ve view
fakat _vim
ancak yazarsanız vim
sonra tamamlama sunacak _vim
.