Menyalin & Menempel dengan URxvt

27

Saya menggunakan URxvt 9.20 di debian jessie dan saya sedang mencari cara untuk menyalin & menempelkan teks seperti saya terbiasa dengan terminal gnome ( Ctrl+ Insertuntuk menyalin, Shift+ Insertuntuk menempel).

Ia bekerja di dalam konsol urxvt yang berbeda, namun tidak berfungsi antara misalnya urxvt dan iceweasel.

Saya mencoba sesuai dengan manual di archlinux , tetapi itu tidak akan berhasil (walaupun saya sebenarnya tidak ingin menggunakan Shift+ Ctrl+ C/ Vitu patut dicoba).

. Sumber daya:

! ******************
! urxvt config
! ******************

! Disable Perl extension
! If you do not use the Perl extension features, you can improve the security
! and speed by disabling Perl extensions completely. 
URxvt.perl-ext:
URxvt.perl-ext-common:

! Font spacing
! By default the distance between characters can feel too wide. It's controlled
! by this entry: 
! URxvt.letterSpace: -1

! -- Fonts -- !
URxvt.font:xft:Monospace:pixelsize=13
URxvt.boldfont:xft:Monospace-Bold:pixelsize=13
!URxvt*font:  -xos4-terminus-medium-*-*-*-14-*-*-*-*-*-iso8859-15,xft:terminus:pixelsize:12
!URxvt*boldFont:  -xos4-terminus-bold-*-*-*-14-*-*-*-*-*-iso8859-15,xft:terminus:bold:pixelsize:12
!URxvt*italicFont:  xft:Bitstream Vera Sans Mono:italic:autohint=true:pixelsize=12
!URxvt*boldItalicFont:  xft:Bitstream Vera Sans Mono:bold:italic:autohint=true:pixelsize=12

! Disable scrollbar
!URxvt*scrollBar: false

! Scrollbar style - rxvt (default), plain (most compact), next, or xterm
URxvt.scrollstyle: plain

! Background color
!URxvt*background: black
URxvt*background: #1B1B1B

! Font color
!URxvt*foreground: white
URxvt*foreground: #00FF00

! Other colors
URxvt*color0: black
!URxvt*color1: red3
URxvt*color1: #CD0000
URxvt*color2: green3
!URxvt*color3: yellow3
URxvt*color3: #C4A000
URxvt*color4: blue2
!URxvt*color4: #3465A4
URxvt*color5: magenta3
URxvt*color6: cyan3
URxvt*color7: gray90
URxvt*color8: grey50
URxvt*color9: red
URxvt*color10: green
URxvt*color11: yellow
!URxvt*color12: blue
URxvt*color12: #3465A4
URxvt*color13: magenta
URxvt*color14: cyan
URxvt*color15: white
! ******************
! /urxvt config
! ******************
Thomas John
sumber
Anda tahu Anda bisa menyalin dengan memilih teks dengan mouse Anda dan menempelkannya dengan mengklik tengah, bukan? Jika tidak, apakah itu cukup?
terdon
2
Masalahnya di sini adalah bahwa kedua program menggunakan pilihan X-Windows yang berbeda, program tradisional menggunakan PRIMARYpilihan dengan Shift + Insert, dan program baru yang mencoba untuk meniru ikatan kunci dari sistem lain menempelkan CLIPBOARDseleksi untuk ikatan kunci yang sama. Di GTK + menjadi lebih sulit untuk menempel PRIMARYtanpa menggunakan mouse (klik tengah, seperti @terdon berkata, atau klik kanan + kiri, jika emulasi tombol ketiga aktif). Tapi, sementara ini menjelaskan mengapa program tidak mengirimkan data di antara mereka, saya bertanya-tanya mengapa saran wiki lengkung tidak berfungsi.
njsg
Bagaimana Anda mencoba saran dari ArchWIki? Jika Anda menggunakan layar login grafis untuk memulai X, Anda perlu memuat ulang sumber X menggunakan xrdb(harus xrdb ~.Xresourcesatau sesuatu yang serupa). Apa pun itu, Anda juga harus memulai ulang urxvt. Dalam beberapa distribusi, Anda mungkin perlu menginstal paket terpisah dengan ekstensi perl, tetapi ini tampaknya termasuk dalam rxvt-unicodepaket dasar di debian (meskipun saya mungkin salah).
njsg
1
@terdon terima kasih atas komentar Anda. Memilih dengan mouse dan menempel dengan klik tengah memang berhasil. Sayangnya bukan itu yang ingin saya capai, saya ingin menggunakan Ctrl + Insert / Shift + Insert seperti yang biasa saya lakukan (kebiasaan dan mantra membuat kita bekerja dengan efisien dan cepat, saya tidak sering menggunakan mouse (Saya menggunakan i3wm).)
Thomas John
@ njsg terima kasih banyak untuk menjelaskan perbedaan utama / papan klip. Saya mencoba ekstensi Perl yang disebutkan di ArchWiki di "Custom key bindings", itu tidak membuat perbedaan (saya berkomentar bagian "Nonaktifkan Perl ekstensi" di .Xresources saya sebelum menggunakannya untuk menggunakan tentu saja). - Ya, saya lakukan $ xrdb -merge ~/.Xresourcedulu - Ya, saya memang me-restart urxvt, atau membuka jendela terminal urxvt baru, yang memiliki efek yang sama saya lupa menyebutkan poin penting yang paling mungkin: saya tidak memiliki lingkungan desktop yang diinstal: - Saya ' m hanya menggunakan windows manager (i3wm) - Saya menggunakan manajer login grafis
Thomas John

Jawaban:

16

Sayangnya, sistem X window memiliki beberapa mekanisme copy-paste yang berbeda .

Rxvt, seperti kebanyakan aplikasi X kuno, menggunakan pilihan utama. Secara umum, ketika Anda memilih sesuatu dengan mouse, itu secara otomatis disalin ke pemilihan utama, dan ketika Anda klik-tengah untuk menempel, yang menempelkan pemilihan utama.

Ctrl+ Cdan Ctrl+ V(atau binding kunci lainnya) dalam aplikasi menggunakan toolkit GUI modern, seperti Gnome-terminal dan Firefox, salin / tempel dari clipboard.

Ada alat untuk memudahkan bekerja dengan pilihan. Secara khusus, jika Anda hanya ingin memiliki satu pilihan yang disalin ke apakah Anda memilih dengan mouse atau tekan Ctrl+ C, Anda dapat menjalankan autocutsel (mulai dari .xinitrcatau dari program startup lingkungan desktop Anda), yang mendeteksi ketika sesuatu disalin ke salah satu pilihan dan secara otomatis menyalinnya ke yang lain.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
20

Untuk menempelkan teks, di urxvt / rxvt-unicode yang dapat Anda gunakan middle buttonuntuk menempelkan pilihan PRIMARY dan Alt/Meta+ middle buttonuntuk menempelkan CLIPBOARD.

Untuk menyalin, cukup dengan menandai teks di terminal, salin ke pilihan PRIMARY. Namun, beberapa pekerjaan diperlukan untuk menyalin ke pemilihan CLIPBOARD. Saya menggabungkan informasi dari halaman Archlinux yang Anda tautkan dengan skrip yang termasuk dalam rxvt-unicode-9.19 dan berakhir dengan skrip seperti ini: https://gist.github.com/xkr47/98224ed6b0860cb55ec0 . Ini memungkinkan seseorang untuk menggunakan Ctrl+ Insertatau Ctrl+ Shift+ c`untuk menyalin teks yang saat ini dipilih ke CLIPBOARD.

Semoga ini membantu.

Sebagai catatan, saya juga tidak menjalankan lingkungan desktop; menggunakan Sawfish sebagai window manager.

Tip : Anda dapat memonitor clipboard di terminal menggunakan program "xclip":

while :; do echo -ne '\033[31;1mCLIPBOARD: ' ; xclip -o -sel c ; echo ; echo -ne '\033[32;1mPRIMARY:   ' ; xclip -o -sel p ; echo ; echo -e '\033[m--------' ; sleep 1 ; done

atau menggunakan program "xsel":

while :; do echo -ne '\033[31;1mCLIPBOARD: ' ; xsel -b -o ; echo ; echo -ne '\033[32;1mPRIMARY:   ' ; xclip -p -o ; echo ; echo -e '\033[m--------' ; sleep 1 ; done
Jonas Berlin
sumber
Topik sampingan: Info tentang cara pemilihan PRIMARY dan CLIPBOARD di Emacs: emacswiki.org/emacs/CopyAndPaste
Jonas Berlin
Alt / Meta + tombol tengah bekerja untuk saya di Debian
Jing
Ini jawaban yang benar.
Winny
15

Ada mekanisme built-in untuk menyalin / menempel ke / dari PRIMARY(digunakan ketika pengguna memilih beberapa data) danCLIPBOARD (digunakan ketika pengguna memilih beberapa data dan secara eksplisit meminta untuk "disalin" ke clipboard, seperti dengan memohon "Salin" di bawah menu "Edit" aplikasi). Lebih lanjut tentang clipboard yang berbeda di X .

Untuk CLIPBOARDbuffer itu CTRL+META+C(yang CTRL+ALT+Cuntuk keyboard PC standar) untuk menyalin dan CTRL+META+V( CTRL+ALT+V) untuk menempel.

Kutipan dari urxvt man :

SELEKSI: MEMILIH DAN MEMASTIKAN TEKS

Perilaku pemilihan teks dan mekanisme penyisipan / menempel mirip dengan xterm (1).

Memilih :

Klik kiri di awal wilayah, seret ke ujung wilayah dan lepaskan; Klik kanan untuk memperluas wilayah yang ditandai; Klik dua kali kiri untuk memilih kata; Klik tiga kali kiri untuk memilih seluruh baris logis (yang dapat menjangkau beberapa baris layar), kecuali diubah oleh resource tripleclickwords.

Memulai seleksi sambil menekan tombol Meta (atau tombol Meta + Ctrl) (Kompilasi: embel-embel) akan membuat seleksi persegi panjang alih-alih yang normal. Dalam mode ini, setiap baris yang dipilih menjadi barisnya sendiri dalam seleksi, dan trailing spasi putih secara visual digarisbawahi dan dihapus dari seleksi.

Menempel :

Menekan dan melepaskan tombol Tengah mouse di jendela urxvt menyebabkan nilai pemilihan PRIMARY (atau CLIPBOARD dengan modifier Meta) dimasukkan seperti jika telah diketik pada keyboard.

Menekan Shift-Insert menyebabkan nilai pemilihan PRIMARY juga dimasukkan.

rxvt-unicode juga menyediakan binding Ctrl-Meta-c dan untuk berinteraksi dengan pemilihan CLIPBOARD. Ikatan pertama menyebabkan nilai seleksi internal untuk disalin ke pilihan CLIPBOARD, sedangkan ikatan kedua menyebabkan nilai seleksi CLIPBOARD untuk dimasukkan.

petRUShka
sumber
Mengapa saya tidak pernah berpikir solusi ada di halaman manual? Sekarang semuanya jelas bagi saya! Terima kasih!
Enrico Maria De Angelis
1
Ngomong-ngomong, saya selalu lupa yang mana antara pemilihan utama dan clipboard yang ditempel ketika saya memilih sesuatu sebelum mengklik kanan dan menempel. Sekarang sudah jelas: sebelumPRIMARY .
Enrico Maria De Angelis
12

Anda dapat membuat salinan urxvt ke Pratama dan Clipboard dengan pilihan perl untuk pemilihan clipboard. Ini membuat mereka tetap sinkron, jadi Anda cukup menyalin sekali di urxvt dan itu akan berfungsi di aplikasi yang menggunakan keduanya.

URxvt.perl-ext-common: selection-to-clipboard
merosot Jo
sumber
2
Bisakah saya mengubah shorcut untuk ekstensi ini? Saya tidak suka default ctrl-alt-c / v. Saya ingin memiliki ctrl-shift-c / v.
Trismegistos
3
@ Trismegistos, bersenang-senanglah di sini
Coder