Bagaimana saya membuat penyelesaian zsh bertindak lebih seperti penyelesaian bash?

17

Saya baru saja bertobat dari bash ke zsh (yang saya gunakan "oh my zsh"), tetapi satu hal yang mengganggu saya:

Ketika saya menekan tombol tab, pelengkapan otomatis pertama diisi secara otomatis, dan Anda perlu menelusuri penyelesaian dengan menekan tab berulang kali.

Ini berbeda dari bash, di mana Anda baru saja ditampilkan daftar penyelesaian. Jika semua penyelesaian memiliki awalan yang sama, maka awalan ini diisi. Anda dapat memilih yang Anda inginkan dengan terus mengetik.

Saya menemukan yang terakhir lebih disukai karena lebih cepat untuk mengetik, daripada memilih penyelesaian dengan menekan tab berulang kali.

Apakah ada cara untuk membuat penyelesaian zsh bertindak lebih seperti bash dalam hal ini?

kewarasan
sumber

Jawaban:

18
setopt noautomenu
setopt nomenucomplete

Anda membutuhkan keduanya. Jika Anda menekan tab cukup banyak kali, Anda akan mendapatkan daftar penyelesaian tetapi itu tidak akan pernah menambahkan karakter apa pun yang Anda ketikkan sejauh ini.

Eyal
sumber
3

Saya tidak berpikir itu perilaku default, tetapi Anda dapat mematikannya dengan menggunakan:

setopt +o menucomplete

Pengaturan lain yang mempengaruhi perilaku ini dengan cara yang berbeda meliputi: autolist, automenu, bashautolist, listambiguous. Lihat bagian "Penyelesaian" man zshoptionsuntuk detailnya. Anda dapat menambahkan perintah ini ke ~/.zshrcfile Anda .

Anda dapat mengonfigurasi banyak hal lain secara interaktif dengan melakukan:

autoload -U compinstall
compinstall

dan mengikuti petunjuk dan menu.

Dalam Bash, perilaku ini dikendalikan dengan mengikat Tabke completeatau menu-completedi ~/.inputrc:

"\C-i": complete   # do list completion

atau dari prompt shell atau di ~/.bashrc:

bind '"\C-i": menu-complete' # do menu completion
Dijeda sampai pemberitahuan lebih lanjut.
sumber
1
meta comment: bagaimana Anda membuat karakter "tab" terlihat seperti itu?
Orang Baik
2
@Orang Baik:<kbd>Tab</kbd>
Dijeda hingga pemberitahuan lebih lanjut.