ใน zsh เมื่อใดก็ตามที่ฉันกด Fn + Delete (ซึ่งเป็นการลบไปข้างหน้า) จะมีการแทรก tilde (~) นี่บ่งชี้ว่า zsh ไม่มีคีย์ที่ผูกไว้
ฉันจะผูกมันและทำให้มันทำงานได้ตามปกติ (ลบที่ด้านหน้าของเคอร์เซอร์)
ใน zsh เมื่อใดก็ตามที่ฉันกด Fn + Delete (ซึ่งเป็นการลบไปข้างหน้า) จะมีการแทรก tilde (~) นี่บ่งชี้ว่า zsh ไม่มีคีย์ที่ผูกไว้
ฉันจะผูกมันและทำให้มันทำงานได้ตามปกติ (ลบที่ด้านหน้าของเคอร์เซอร์)
คำตอบ:
ก่อนอื่นให้หาลำดับที่สร้าง
echo "
CtrlVFnDelete" | od -c
จากนั้นผูกลำดับนั้นโดยใช้กลไก zsh bind ปกติ
echo "~"
ได้คุณต้องทำตามคำแนะนำที่อิกนาชิโอให้มา ในระบบของฉันมัน^[[3~
(หรือod
เอาท์พุท: 033 [ 3 ~
) ดังนั้นคำสั่งจะเป็นซึ่งจะไปในที่ของคุณbindkey "^[[3~" delete-char
~/.zshrc
ctrl-v
เป็นลำดับการหลบหนีพิเศษที่หมายถึง "แทรกตัวอักษรตัวถัดไปที่ฉันกดเป็นตัวอักษรที่ไม่มีการหลีกเลี่ยงตัวอักษรแทนที่จะทำสิ่งที่มันมักจะทำ" หมายความว่ามันจะไม่ถูกแปลงเป็น~
แต่ยังคงเป็นลำดับการหลบหนี
0000000 C t r l V F n D e l e t e \n 0000016
การส่งออกของฉันคือ
สำหรับฉันข้างต้นไม่ได้ทำเคล็ดลับดังนั้นฉันจึงเพิ่มกุญแจดังต่อไปนี้ที่มีผลผูกพันกับฉัน~/.zshrc
:
bindkey "\e[3~" delete-char
FYI: ฉันใช้ Mac (High Sierra)
~/.zshrc
เพื่อที่ฉันสามารถตั้งรหัสที่สอดคล้องกันในของฉัน
cat
แล้วพิมพ์คีย์ Fn+F1
ให้ฉัน^[OP
เช่น
bindkey '
CtrlvFnDelete' delete-char
สิ่งนี้จะผูกFn+ Deleteเพื่อลบไปข้างหน้าตัวละครตัวเดียว หากข้างต้นไม่ชัดเจนคุณจะต้องพิมพ์Ctrl+ v, Fn+ Deleteระหว่างการพิมพ์คำพูด Ctrl+ vช่วยให้คุณพิมพ์ลำดับการหลบหนีอย่างแท้จริงของสิ่งที่สำคัญมาหลังจากนั้น
คุณสามารถใส่บรรทัดนี้ใน~/.zshrc
ไฟล์ของคุณ