การผูก Fn-Delete ใน zsh บน Mac OS X


22

ใน zsh เมื่อใดก็ตามที่ฉันกด Fn + Delete (ซึ่งเป็นการลบไปข้างหน้า) จะมีการแทรก tilde (~) นี่บ่งชี้ว่า zsh ไม่มีคีย์ที่ผูกไว้

ฉันจะผูกมันและทำให้มันทำงานได้ตามปกติ (ลบที่ด้านหน้าของเคอร์เซอร์)

คำตอบ:


20

ก่อนอื่นให้หาลำดับที่สร้าง

echo "CtrlVFnDelete" | od -c

จากนั้นผูกลำดับนั้นโดยใช้กลไก zsh bind ปกติ


1
~> echo "~" | od -c 0000000 ~ \ n 0000002 ~> ฉันจะทำอย่างไรกับข้อมูลนี้ในตอนนี้?
Thomas R

10
@rixth: มันไม่ได้ส่งออกเพียงตัวหนอน คุณไม่สามารถใช้งานecho "~"ได้คุณต้องทำตามคำแนะนำที่อิกนาชิโอให้มา ในระบบของฉันมัน^[[3~(หรือodเอาท์พุท: 033 [ 3 ~) ดังนั้นคำสั่งจะเป็นซึ่งจะไปในที่ของคุณbindkey "^[[3~" delete-char ~/.zshrc
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

2
เพื่ออธิบายให้ชัดเจนข้างต้นctrl-vเป็นลำดับการหลบหนีพิเศษที่หมายถึง "แทรกตัวอักษรตัวถัดไปที่ฉันกดเป็นตัวอักษรที่ไม่มีการหลีกเลี่ยงตัวอักษรแทนที่จะทำสิ่งที่มันมักจะทำ" หมายความว่ามันจะไม่ถูกแปลงเป็น~แต่ยังคงเป็นลำดับการหลบหนี
NHDaly

ฉันไม่เข้าใจวิธีการใช้ผลลัพธ์จากด้านบนเพื่อรับ bindkey 0000000 C t r l V F n D e l e t e \n 0000016การส่งออกของฉันคือ
โอลิเวอร์โจเซฟแอช

4

สำหรับฉันข้างต้นไม่ได้ทำเคล็ดลับดังนั้นฉันจึงเพิ่มกุญแจดังต่อไปนี้ที่มีผลผูกพันกับฉัน~/.zshrc:

bindkey "\e[3~" delete-char

FYI: ฉันใช้ Mac (High Sierra)


และจะรู้รหัสสำหรับคีย์อื่น ๆ ที่ฉันต้องการผูกเช่น Fn + F1 ได้อย่างไร ~/.zshrcเพื่อที่ฉันสามารถตั้งรหัสที่สอดคล้องกันในของฉัน
alexventuraio

1
คุณสามารถพิมพ์catแล้วพิมพ์คีย์ Fn+F1ให้ฉัน^[OPเช่น
LordTribual

1

bindkey 'CtrlvFnDelete' delete-char

สิ่งนี้จะผูกFn+ Deleteเพื่อลบไปข้างหน้าตัวละครตัวเดียว หากข้างต้นไม่ชัดเจนคุณจะต้องพิมพ์Ctrl+ v, Fn+ Deleteระหว่างการพิมพ์คำพูด Ctrl+ vช่วยให้คุณพิมพ์ลำดับการหลบหนีอย่างแท้จริงของสิ่งที่สำคัญมาหลังจากนั้น

คุณสามารถใส่บรรทัดนี้ใน~/.zshrcไฟล์ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.