Saya memiliki gangguan kecil dengan bagaimana zsh
melakukan saran lengkap untuk perintah saya.
Jika saya mengetik awal perintah yang belum saya instal dan menekannya tab
akan menyarankan fungsi penyelesaian yang diinstal.
Katakanlah saya ingin menjalankan vim
tetapi tidak diinstal itu akan menyarankan _vim
.
Apakah ada cara untuk mematikan ini? Atau apakah saya melakukan sesuatu yang salah pada pengaturan saya?
Semua dotfile saya bersifat publik di github.com/henrikbjorn/castle
.
zsh
autocomplete
Henrik Bjørnskov
sumber
sumber
Jawaban:
Secara default, mesin penyelesaian zsh hanya mencoba untuk menambahkan sesuatu ke apa yang Anda ketik. Anda mengkonfigurasinya untuk mencoba menambahkan awalan juga. Mesin konfigurasi penyelesaian interaktif sederhana (
compinstall
) menawarkan ini di bawah "kontrol yang cocok → penyelesaian substring". Ini menyisipkan baris seperti ini di.zshrc
:The
zstyle
builtin set (kebanyakan) pengaturan selesai. Gayamatcher-list
penyelesaian adalah daftar cara untuk mencoba berturut-turut, berhenti ketika setidaknya ada satu pertandingan. String kosong berarti penyelesaian standar (hanya sufiks). The kontrol yang cocok manteral:|=* r:|=*
sarana untuk mencoba pencocokan awalan*
dan akhiran yang cocok*
, yaitu awalan dan akhiran.Anda dapat melarang awalan yang dimulai dengan
_
semuanya. Ini masih memungkinkan penyelesaian kata-kata yang dimulai dengan_
, dan selesai dengan menambahkan awalan, tetapi awalan mungkin tidak dimulai dengan_
.Ini berlaku untuk semua penyelesaian, bukan hanya penyelesaian nama perintah. Saya tidak tahu cara membatasi ini untuk perintah nama.
Seharusnya ada cara untuk lebih tepatnya mengecualikan nama perintah yang dimulai dengan
_
, tetapi saya tidak tahu caranya. Awal pertama adalah denganignored-patterns
gaya penyelesaian.Ini tidak termasuk kecocokan yang dimulai dengan
_
; namun, jika tidak ada kecocokan, maka zsh akan mencoba lagi tanpa aturan abaikan. Yang baik dari ini adalah bahwa jika perintah dimulai dengan garis bawah di tempat pertama, itu akan selesai di lintasan kedua ini. Bagian yang buruk adalah bahwa zsh akan mencoba menambahkan garis bawah pula jika tidak ada kecocokan, jadi jika Anda memilikivi
danview
tetapi tidakvim
maka menekan Tabsetelahvi
akan menawarkanvi
danview
tetapi tidak_vim
, tetapi jika Anda mengetikvim
maka penyelesaian akan menawarkan_vim
.sumber
ignore-patterns
berfungsi dengan baik untuk saya, bahkan jika tidak ada kecocokan. Baru saja memastikan itucompleter
tidak mengandung_ignored
.