ฉันต้องการรวมบัฟเฟอร์การตัดของ Zsh เข้ากับคลิปบอร์ด X ฉันลองhttp://stchaz.free.fr/mouse.zsh ก่อนหน้านี้แต่ฉันพบว่าฉันไม่ชอบการใช้งาน Zsh ทั้งหมดของฉันเติมคลิปบอร์ด ตัวอย่างเช่นบางครั้งฉันจะคัดลอกบางสิ่งในเบราว์เซอร์แล้วไปที่เชลล์และแก้ไขบรรทัดคำสั่งแล้ววาง แต่บ่อยครั้งที่การแก้ไขบรรทัดคำสั่ง - การลบคำเช่น - ปรับเปลี่ยน Zsh cut buffer ดีกว่าหรือแย่กว่า X มีคลิปบอร์ดไม่ใช่แหวนฆ่าดังนั้นเมื่อการแก้ไข Zsh เขียนทับคลิปบอร์ดสิ่งที่ฉันต้องการวางหายไป - ฉันไม่สามารถดึงมันออกมาได้ (Cy My) เท่าที่จะทำได้ ทำใน Zsh หรือ Emacs
ดังนั้นสิ่งที่ฉันทำคือสร้างคีย์ลัดพิเศษใหม่เพื่อโต้ตอบกับคลิปบอร์ด X ผ่าน zsh ปรากฎว่า "^ Xw" และ "^ Xy" นั้นไม่ได้ใช้ทั้งใน Emacs และ Zsh ดังนั้นฉันจึงสามารถรับส่วนต่อประสานที่สอดคล้องกันได้โดยผูกเข้ากับทั้งสองแอปพลิเคชัน วิธีนี้เป็นการดำเนินการแก้ไข cutbuffer และ kill ring แบบปกติจะถูกทิ้งไว้ตามลำพัง หากฉันต้องการคัดลอกบางสิ่งไปยังคลิปบอร์ดฉันตั้งค่าภูมิภาคและทำ "^ Xw" (หรือถ้าฉันฆ่าไปแล้วและพื้นที่ไม่ได้ใช้งานฉันสามารถทำ "^ Xw" เพื่อคัดลอกบัฟเฟอร์ตัด) การวางจากคลิปบอร์ดทำได้ด้วย "^ Xy"
# define commands to copy and paste x clipboard
# ^Xw - copy region, or cut buffer
# ^Xy - paste x clipboard
# in both cases, modifies CUTBUFFER
copy-to-xclip() {
[[ "$REGION_ACTIVE" -ne 0 ]] && zle copy-region-as-kill
print -rn -- $CUTBUFFER | xclip -selection clipboard -i
}
zle -N copy-to-xclip
bindkey "^Xw" copy-to-xclip
paste-xclip() {
killring=("$CUTBUFFER" "${(@)killring[1,-2]}")
CUTBUFFER=$(xclip -selection clipboard -o)
zle yank
}
zle -N paste-xclip
bindkey "^Xy" paste-xclip
kill-region
ด้วยvi-delete
และyank
ด้วยvi-put-after
เป็นต้นห่อในทำนองเดียวกันvi-yank
และอื่น ๆ (ฉันไม่ได้พบวิธีที่จะทำมันจากส่วนกลางมากขึ้น)