Di zsh, setiap kali saya menekan Fn + Delete (yang merupakan forward delete) sebuah tilde (~) dimasukkan. Ini menunjukkan zsh tidak memiliki kunci terikat.
Bagaimana saya mengikatnya, dan membuatnya berperilaku normal (hapus di depan kursor)?
Pertama cari tahu urutan apa yang dihasilkannya.
echo "
CtrlVFnDelete" | od -c
Kemudian ikat urutan itu menggunakan mekanisme ikat zsh normal.
echo "~"
, Anda harus benar-benar mengikuti petunjuk yang diberikan Ignacio kepada Anda. Di sistem saya, ini^[[3~
(atau sebagaiod
output:)033 [ 3 ~
. Jadi perintah akan menjadibindkey "^[[3~" delete-char
yang akan masuk di Anda~/.zshrc
.ctrl-v
adalah urutan pelarian khusus yang berarti "menyisipkan karakter berikutnya yang saya tekan sebagai karakter yang tidak dilepaskan secara harfiah, alih-alih melakukan apa pun yang biasanya dilakukannya." Artinya tidak dikonversi~
, tetapi tetap sebagai urutan pelarian.0000000 C t r l V F n D e l e t e \n 0000016
.Bagi saya hal di atas tidak berhasil, jadi saya menambahkan kunci berikut yang mengikat saya
~/.zshrc
:bindkey "\e[3~" delete-char
FYI: Saya menggunakan Mac (High Sierra).
sumber
~/.zshrc
.cat
dan mengetikkan kunci.Fn+F1
memberi saya^[OP
misalnya.bindkey '
CtrlvFnDelete' delete-char
Ini akan mengikat Fn+ Deleteuntuk menghapus maju satu karakter. Jika hal di atas tidak jelas, Anda harus mengetikkan Ctrl+ v, Fn+ di Deleteantara mengetikkan tanda kutip. Ctrl+ vmemungkinkan Anda mengetik urutan escape secara literal dari kunci apa pun yang muncul setelahnya.
Anda dapat meletakkan baris ini di
~/.zshrc
file Anda .sumber