Siklus melalui pertandingan di ZSH history-incremental-pattern-search-backward

10

Baru-baru ini saya mengalihkan pencarian riwayat untuk digunakan history-incremental-pattern-search-backwardkarena memungkinkan untuk pola dalam pencarian. Berikut ini cara pengaturannya di my.zshrc

bindkey -M vicmd '/' history-incremental-pattern-search-backward

Ini berfungsi dengan baik, tetapi saya tidak tahu cara menuju pertandingan berikutnya dari menu pencarian.

% cat foobarbaz.txt
bck-i-search: f*baz

Apakah ada kunci untuk melakukan ini?

claytron
sumber

Jawaban:

12

Akhirnya ditemukan mantera yang tepat. Anda perlu memetakan pencarian pola dalam mode sisipkan. Ini adalah bagian yang saya lewatkan:

# Search backwards and forwards with a pattern
bindkey -M vicmd '/' history-incremental-pattern-search-backward
bindkey -M vicmd '?' history-incremental-pattern-search-forward

# set up for insert mode too
bindkey -M viins '^R' history-incremental-pattern-search-backward
bindkey -M viins '^F' history-incremental-pattern-search-forward

Saya akan digunakan ^Buntuk pencarian mundur dalam mode insert, tapi saya punya yang dipetakan ke sesuatu yang lain. Jadi sekarang ^Rdan ^Fsiklus pertandingan.

claytron
sumber
apa yang dilakukan -Mperintah? Dalam kasus saya, bahkan tanpa -Mkata kunci ini berfungsi dengan baik ..
alpha_989
The -M keymapmemberitahu bindkey yang keymap untuk menerapkan mengikat. Saya telah mengaturnya untuk mode memasukkan dan mode perintah.
claytron
Terimakasih atas klarifikasinya. Dalam kasus saya, saya hanya punya bindkey '^R' history-incremental-pattern-search-backward, dan itu berhasil. Saya juga menggunakan /perintah default dalam model vi normal di zsh. Dalam hal itu saya dapat mencari sejarah perintah, dan setelah menemukan perintah, itu hanya akan memberikannya di baris perintah. Maka saya bisa memodifikasi perintah terakhir jika perlu.
alpha_989
Jika saya menggunakan '^R' history-incremental-pattern-search-backward, di sisi lain, itu hanya akan mendarat saya ke perintah terakhir yang cocok dengan string pencarian. Namun, saya belum menemukan cara untuk benar-benar dapat mengedit perintah. Setelah menemukan perintah yang cocok dengan string pencarian melalui pencarian derai incremantal, apakah ada kombinasi tombol tertentu, yang dapat saya tekan untuk dapat mengedit perintah?
alpha_989
8

Menurut zshzlehalaman manual untuk zsh 4.3.10, tidak ada kunci yang terikat secara default. Anda perlu menambahkan binding ke isearchpeta, dan hanya beberapa widget yang tersedia. Misalnya, Anda dapat melakukan:

bindkey -M isearch '^R' history-incremental-search-backward
bindkey -M isearch '^S' history-incremental-search-forward
Gilles 'SANGAT berhenti menjadi jahat'
sumber
bindkey -ltidak menunjukkan isearchpemetaan
claytron
@claytron: harus merupakan masalah versi: isearchbaru di 4.3.10, ketika history-incremental-pattern-search-backwardmuncul di 4.3.7 (jika saya membaca changelog dengan benar).
Gilles 'SANGAT berhenti menjadi jahat'
Saya menggunakan 4.3.10, tidak yakin mengapa itu tidak ada. Menggunakan binding mode insert bekerja untuk saya.
claytron