Bash autocomplete: daftar file pertama kemudian siklus melalui mereka

27

Apakah mungkin untuk mengkonfigurasi bash sedemikian rupa sehingga pada tab pertama autocomplete ia mencantumkan semua file yang mungkin dan pada siklus berikutnya melalui pilihan?

Kedua opsi itu mudah dilakukan secara terpisah dan saya bisa mengikatnya ke tombol yang berbeda, tetapi di atas akan sempurna, tetapi saya tidak dapat menemukan apa pun di internet.

Voo
sumber
3
Sudah lama sejak saya menggunakan ZSH, tapi saya percaya fungsi autocomplete seperti ini.
jordanm
1
@jordanm Yah sepertinya pilihan jika tidak ada yang berfungsi, tapi itu juga akan berarti memperbarui semuanya dari .bashrc, dll. ke ZSH, yang ingin saya hindari.
Voo

Jawaban:

31

Ini sepertinya dekat dengan yang Anda inginkan:

bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"
Jim Paris
sumber
1
Hampir sempurna, terlepas dari cacat kecil yang juga terisi otomatis pada tab pertama, yang bisa sedikit mengganggu jika saya hanya mencoba mencari tahu nama yang tepat (yaitu saya harus menghapus lebih banyak karakter jika saya ingin ubah dulu), tapi aku cukup mau hidup dengan itu.
Voo
1
Bagaimana ini bisa dengan mudah dibatalkan?
dingalapadum
1
bind "TAB:complete"; bind "set show-all-if-ambiguous off"
Jim Paris
13
@ Vooo menambahkan baris ketiga bind "set menu-complete-display-prefix on"hanya akan daftar kandidat pada tab pertama tanpa penyelesaian otomatis
Naitree
2
@Naitree tidak bisa cukup meningkatkan saran Anda. Ini berfungsi dan IS begitu, jauh lebih baik daripada perilaku bash default. Terima kasih.
JBeurer
1

Inilah yang saya gunakan. Sejauh yang saya tahu itu melakukan apa yang Anda inginkan.

# make tab cycle through commands after listing
bind '"\t":menu-complete'
bind "set show-all-if-ambiguous on"
bind "set completion-ignore-case on"
bind "set menu-complete-display-prefix on"

Ini berfungsi pada Mac (10.13 & 10.14) dan Ubuntu (16.04 & 18.04).

Milo
sumber
0

Sudahkah Anda mempertimbangkan? Itu direferensikan di Superuser ...

[[ $- = *i* ]] && bind TAB:menu-complete
Tink
sumber
1
menu-completehanya setengah dari pertanyaan yang diajukan. Seperti pertanyaannya, "[b] opsi lain mudah dilakukan secara terpisah" .
jw013
Ya saya tahu cara mengubah perilaku ke salah satu dari dua opsi, tapi itu bagian yang mudah. Masalah sebenarnya adalah bagaimana menggabungkan keduanya menjadi satu.
Voo