ikat urutan tombol ke Escape, zsh

11

Bagaimana saya akan peta jjke Escdalam zsh?

Saya mencoba untuk membuat ulang pemetaan kunci yang telah saya siapkan di vim, di mana saya telah jjmemetakan ESCsehingga setiap kali saya menekan dua kali j, ia mengirimkan sebuah <Esc>ke vim - memungkinkan saya untuk masuk ke mode normal dengan kenyamanan yang lebih besar.

Saya sudah mencoba bindkey 'jj' ^[, dan saya akan mencoba bindkey 'jj' ^[[, tetapi saya ragu itu akan berhasil. Saya juga memeriksa daftar perintah yang disediakan oleh zsh dalam mode normal, tetapi saya tidak melihat apa pun yang berisi normalatau escape.

CATATAN
The ^[karakter dalam saya ~/.zshrcberkas yang sebenarnya lolos kode keras; bukan hanya karakter ^dan [.

Alexej Magura
sumber

Jawaban:

12

Anda perlu -smengikat string aktual alih-alih widget:

bindkey -s jj '\e'

Meskipun Anda mungkin ingin untuk memetakan jjke vi-cmd-modewidget di sini:

bindkey jj vi-cmd-mode

(perhatikan itu untuk mengikat dalam mode insert, bukan mode normal / perintah)

Stéphane Chazelas
sumber
1
yang kedua berfungsi seperti mantra, terima kasih!
Alexej Magura
2
Pengaturan CATATANKEYTIMEOUT tampaknya mematahkan ikatan-kunci.
Alexej Magura
@AlexejMagura baru saja menambahkan: mengatur KEYTIMEOUT terlalu rendah melarang zle mengenali pers ganda.
UltraMaster