Saya ingin mengintegrasikan buffer cut Zsh dengan clipboard X. Saya mencoba http://stchaz.free.fr/mouse.zsh yang disebutkan di atas, tetapi saya merasa saya tidak suka memiliki semua operasi Zsh saya mengisi clipboard. Misalnya, kadang-kadang saya akan menyalin sesuatu di browser, dan kemudian pergi ke shell dan edit baris perintah dan kemudian tempel. Tetapi sering mengedit baris perintah - menghapus kata, misalnya - memodifikasi buffer cut Zsh. Baik atau buruk, X hanya memiliki clipboard, bukan ring kill, jadi ketika operasi pengeditan Zsh menimpa clipboard, hal yang ingin saya tempelkan hilang - saya tidak dapat mencabutnya (Cy My) semampu saya lakukan di Zsh atau Emacs.
Jadi yang saya lakukan adalah membuat keybindings khusus baru untuk berinteraksi dengan clipboard X melalui zsh. Ternyata "^ Xw" dan "^ Xy" tidak digunakan di Emacs dan Zsh, jadi saya bisa mendapatkan antarmuka yang konsisten dengan mengikatnya di kedua aplikasi. Dengan cara ini operasi pengeditan normal, cutbuffer, dan kill dibiarkan sendiri. Jika saya ingin menyalin sesuatu ke clipboard saya mengatur wilayah dan melakukan "^ Xw" (atau jika saya sudah membunuhnya dan wilayah tidak aktif saya bisa melakukan "^ Xw" untuk menyalin buffer cut). Menempel dari clipboard dilakukan dengan "^ 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
denganvi-delete
danyank
denganvi-put-after
dll. Membungkus serupavi-yank
, dan lainnya. (Saya belum menemukan cara untuk melakukannya secara lebih terpusat)