Trong trình bao Z, làm cách nào tôi có thể sử dụng bindkey để liên kết một chuỗi khóa với tập lệnh?
Trong trình bao Z, làm cách nào tôi có thể sử dụng bindkey để liên kết một chuỗi khóa với tập lệnh?
Câu trả lời:
Bạn có thể xác định một widget gọi tập lệnh của bạn:
my-script_widget() my-script its args
zle -N my-script_widget
bindkey '\ej' my-script_widget
Nhưng tại sao bạn muốn gọi kịch bản của bạn trực tiếp từ zle?
Nếu nó hiển thị bất cứ điều gì, nó sẽ làm rối màn hình. Nếu bạn muốn đầu ra của nó được hiển thị như các thông báo widget khác, bạn có thể làm:
my-script_widget() zle -M "$(my-script its args)"
Hoặc nếu bạn muốn đầu ra được chèn vào con trỏ:
my-script_widget() LBUFFER+=$(my-script its args)
Tôi nghĩ rằng bạn không cần widget cho điều đó:
bindkey -s '\eb' '/path/to/script.sh\n'
Từ tài liệu zsh :
Cũng như các lệnh ZLE, các chuỗi khóa có thể được liên kết với các chuỗi khác, bằng cách sử dụng 'bindkey -s'.
bindkey -s '\eb' '/path/to/script.sh^M'
Alt-B
với tập lệnh, điều đó gây ra/path/to/script.sh\n
được chèn vào như thể được gõ. Chẳng hạn, nếu bạn gõAlt-B
sau khi đã nhậpecho
, nó sẽ chỉ chạyecho /path/to/script.sh
lệnh và đưa bạn trở lại một dấu nhắc trống (với nhữngecho
gì bạn đã nhập trước đó).