Perbarui daftar penyelesaian secara dinamis di zsh


13

Saya menemukan daftar hasil zsh untuk Tabpenyelesaian cukup berguna, namun saya ingin sedikit mengubah perilaku mereka:

Mereka akan muncul ketika saya Tabuntuk pertama kalinya dan kemudian secara dinamis memperbarui dengan setiap huruf baru ditambahkan. Perilaku default adalah bahwa saran hanya dievaluasi ulang ketika Anda Tablagi, saya ingin menyimpan penekanan tombol berulang ini. ( Pembaruan: Tetapi hanya daftar penyelesaian yang mungkin, itu seharusnya tidak secara otomatis mengubah baris prompt saya yang sebenarnya bahkan jika hanya ada satu opsi yang tersisa.)

Apakah ada cara untuk mencapai perilaku seperti itu?


Anda bisa memahami zshperilaku menyesuaikan diri. Apa yang seharusnya terjadi? Saat ini pertanyaan ini berbunyi seperti Anda ingin pilihan terdaftar untuk setiap penekanan tombol setelah TAB awal, tetapi itu tidak akan menyelesaikan apa pun. Haruskah setiap tombol ditekan berperilaku seolah-olah diikuti oleh TAB? Ingatlah bahwa ini berarti sedikit ruang mundur untuk penyelesaian yang tidak diinginkan.
peth

@ user112553 Opsi pertama: Dalam hal itu, seharusnya tidak berperilaku seperti TAB berulang. Saya hanya ingin daftar saran untuk menyesuaikan secara dinamis.
F30

Jawaban:


2

Salah satu cara yang mungkin menawarkan solusi yang Anda inginkan, adalah incremental-complete-word:

zle -N incremental-complete-word
bindkey '^Xi' incremental-complete-word

Ini memuat funtion dan mengikatnya ke Ctrl- X i. Sekarang Anda bisa mencobanya:

> k^Xi
incremental (complete): -no prefix-

Dalam contoh ini surat kitu diketik, diikuti oleh Control-X i.

> kil
incremental (complete): kill       

Saya mengetik ildan sekarang ada satu kemungkinan penyelesaian ( kill). Orang bisa menerimanya dan menekan enter.

> kill^D
incremental (complete): -no prefix-
- external command -
kill      killall   killall5

Dengan mengetik Ctrl- Dzsh menunjukkan kemungkinan penyelesaian.

Dari zshcontrib(1):

incremental-complete-word
Ini memungkinkan penambahan kata secara bertahap. Setelah memulai perintah ini, daftar pilihan penyelesaian dapat ditampilkan setelah setiap karakter yang Anda ketikkan, yang dapat Anda hapus dengan ^Hatau DEL. Menekan pengembalian menerima penyelesaian sejauh ini dan mengembalikan Anda ke pengeditan normal (yaitu, baris perintah tidak segera dieksekusi). Anda dapat menekan TABuntuk melakukan penyelesaian normal, ^G untuk membatalkan kembali ke keadaan ketika Anda mulai, dan ^Duntuk daftar pertandingan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.