Vâng, có một cái gì đó không thể tìm thấy. Bạn đang nhảy trực tiếp từ SIGINT
đến SIGKILL
tín hiệu. Tôi đề nghị, như những người khác , nhìn vào việc gửi SIGHUP
hoặc SIGTERM
tín hiệu trước khi sử dụng tùy chọn hạt nhân. Sau đó, có sự bất cẩn khi có điều này như một ràng buộc chính, điều đó tất nhiên có nghĩa là nó sẽ chỉ hoạt động khi ZLE hoạt động và trình bao tương tác nhắc bạn nhập liệu, không phải khi các lệnh đang chạy. (Đối với điều đó, bạn sẽ cần phải định cấu hình thiết bị đầu cuối, không phải vỏ và cần phải có kỷ luật dòng thiết bị đầu cuối thực hiện gửi SIGTERM
dưới dạng phần mở rộng hành vi được chỉ định POSIX.)
Trên lưu ý đó, dường như không ai khác nhận thấy rằng bạn đang hỏi về các phím bấm trình soạn thảo dòng vỏ, không phải thiết bị đầu cuối. Để trả lời phần đầu tiên của câu hỏi của bạn, sau đó:
Bạn thiết lập chức năng shell để gửi tín hiệu đến công việc "hiện tại".
function terminate-current-job() { kill -s TERM %+ ; }
Sau đó, bạn xây dựng một tiện ích do người dùng ZLE định nghĩa để gọi hàm shell này.
zle -N terminate-current-job terminate-current-job
Sau đó, cuối cùng, bạn liên kết widget đó với một khóa bạn chọn.
bindkey "^/" terminate-current-job