Mengikat Fn-Delete di zsh pada Mac OS X


22

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)?

Jawaban:


20

Pertama cari tahu urutan apa yang dihasilkannya.

echo "CtrlVFnDelete" | od -c

Kemudian ikat urutan itu menggunakan mekanisme ikat zsh normal.


1
~> echo "~" | od -c 0000000 ~ \ n 0000002 ~> Apa yang harus saya lakukan dengan informasi ini sekarang?
Thomas R

10
@rixth: Ini sebenarnya tidak hanya menghasilkan tilde. Anda tidak dapat menggunakan echo "~", Anda harus benar-benar mengikuti petunjuk yang diberikan Ignacio kepada Anda. Di sistem saya, ini ^[[3~(atau sebagai odoutput:) 033 [ 3 ~. Jadi perintah akan menjadi bindkey "^[[3~" delete-charyang akan masuk di Anda ~/.zshrc.
Dijeda sampai pemberitahuan lebih lanjut.

2
Untuk memperjelas hal di atas, ctrl-vadalah 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.
NHDaly

Saya tidak mengerti bagaimana menggunakan output di atas untuk mendapatkan bindkey. Output saya adalah 0000000 C t r l V F n D e l e t e \n 0000016.
Oliver Joseph Ash

4

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).


Dan bagaimana cara mengetahui kode untuk kunci lain yang ingin saya ikat, misalnya Fn + F1? sehingga saya dapat mengatur kode yang sesuai di blog saya ~/.zshrc.
alexventuraio

1
Anda bisa mengetik catdan mengetikkan kunci. Fn+F1memberi saya ^[OPmisalnya.
LordTribual

1

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 ~/.zshrcfile Anda .

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.