ใช่มีบางอย่างที่ไม่เหมาะสม คุณกำลังกระโจนโดยตรงจากSIGINT
ไปSIGKILL
ของสัญญาณ ฉันแนะนำว่าอย่างที่คนอื่นทำดูที่การส่งSIGHUP
หรือSIGTERM
สัญญาณก่อนใช้ตัวเลือกนิวเคลียร์ จากนั้นก็มีความไม่สามารถในการมีสิ่งนี้ในฐานะการเชื่อมโยงคีย์ซึ่งแน่นอนว่ามันจะใช้ได้เฉพาะเมื่อ ZLE แอ็คทีฟและเชลล์กำลังโต้ตอบเพื่อให้คุณป้อนข้อมูลไม่ใช่เมื่อคำสั่งทำงาน (เพื่อที่คุณจะต้องกำหนดค่า terminal, ไม่เปลือกและจำเป็นที่จะต้องมีระเบียบวินัยสายขั้วที่ดำเนินการส่งSIGTERM
เป็นส่วนขยาย POSIX ระบุพฤติกรรม.)
ในบันทึกย่อนั้นดูเหมือนว่าไม่มีใครสังเกตเห็นว่าคุณกำลังถามเกี่ยวกับการแก้ไขคีย์เชลล์บรรทัดคำสั่งไม่ใช่เทอร์มินัล ในการตอบคำถามแรกของคุณจากนั้น:
คุณตั้งค่าฟังก์ชันเชลล์เพื่อส่งสัญญาณไปยังงาน "ปัจจุบัน"
function terminate-current-job() { kill -s TERM %+ ; }
จากนั้นคุณสร้างวิดเจ็ตที่ผู้ใช้กำหนดเอง ZLE ซึ่งเรียกใช้ฟังก์ชันเชลล์นี้
zle -N terminate-current-job terminate-current-job
จากนั้นในที่สุดคุณผูกวิดเจ็ตนั้นกับกุญแจที่คุณเลือก
bindkey "^/" terminate-current-job