Kopiowanie i wklejanie za pomocą URxvt

27

Używam URxvt 9.20 na Debianie Jessie i szukam sposobu na kopiowanie i wklejanie tekstu, tak jak byłem przyzwyczajony z terminalem gnome ( Ctrl+ Insertdo kopiowania, Shift+ Insertdo wklejania).

Działa w różnych konsolach urxvt, jednak nie działa między np. Urxvt i iceweasel.

Próbowałem zgodnie z instrukcją na archlinux , ale to nie zadziała (nawet jeśli tak naprawdę nie chcę używać Shift+ Ctrl+ C/ Vwarto było spróbować).

.Xresources:

! ******************
! 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
źródło
Wiesz, że możesz kopiować, zaznaczając tekst za pomocą myszy i wklejając, klikając środkowym przyciskiem, prawda? Jeśli nie, to wystarczy?
terdon
2
Problem polega na tym, że dwa programy używają różnych wyborów X-Windows, tradycyjne programy używają PRIMARYzaznaczenia za pomocą Shift + Insert, a nowe programy, które próbują naśladować skróty klawiszowe z innych systemów, wklejają CLIPBOARDzaznaczenie dla tego samego przypisania. W GTK + trudniej jest wkleić PRIMARYbez użycia myszy (środkowe kliknięcie, jak powiedział @terdon lub lewy + prawy przycisk, jeśli włączona jest emulacja trzeciego przycisku). Ale chociaż wyjaśnia to, dlaczego programy nie przesyłają danych między nimi, zastanawiam się, dlaczego sugestia arch wiki nie zadziałała.
njsg
Jak wypróbowałeś sugestie ArchWIki? Jeśli używasz graficznego ekranu logowania do uruchomienia X, musisz przeładować zasoby X za pomocą xrdb(powinno to być xrdb ~.Xresourceslub coś podobnego). Tak czy inaczej, musisz również uruchomić ponownie urxvt. W niektórych dystrybucjach może być konieczne zainstalowanie osobnego pakietu z rozszerzeniami perla, ale wydaje się, że jest on zawarty w rxvt-unicodepakiecie podstawowym w debian (choć mogę się mylić).
njsg
1
@terdon dzięki za komentarz. Wybieranie myszą i wklejanie środkowym kliknięciem naprawdę działa. Niestety nie jest to to, co chciałbym osiągnąć, chciałbym używać Ctrl + Insert / Shift + Insert tak, jak zwykle (nawyki i mantry sprawiają, że pracujemy wydajnie i szybko, nie używam często myszy (Używam i3wm).)
Thomas John
@njsg bardzo dziękuję za wyjaśnienie podstawowych / różnic w schowku. Próbowałem rozszerzenia Perla wspomnianego w ArchWiki w „Niestandardowych powiązaniach klawiszy”, to nie miało znaczenia (skomentowałem część „Wyłącz rozszerzenie Perla” w moich .Xresources przed użyciem go oczywiście). - Tak, $ xrdb -merge ~/.Xresourcenajpierw zrobiłem - Tak, ponownie uruchomiłem urxvt lub otworzyłem nowe okna terminala urxvt, co ma taki sam efekt, że zapomniałem wspomnieć o najbardziej prawdopodobnej ważnej kwestii: nie mam zainstalowanego środowiska graficznego: - „ m tylko za pomocą menedżera systemu Windows (i3wm) - Używam graficznego menedżera logowania
Thomas John

Odpowiedzi:

16

Niestety, system X Window ma kilka różnych mechanizmów kopiuj-wklej .

Rxvt, podobnie jak większość old-schoolowych aplikacji X, używa podstawowego wyboru. Ogólnie rzecz biorąc, gdy wybierzesz coś za pomocą myszy, zostanie ono automatycznie skopiowane do zaznaczenia podstawowego, a po kliknięciu środkowym przyciskiem myszy, aby wkleić, zaznaczenie zostanie wklejone.

Ctrl+ Ci Ctrl+ V(lub inne powiązania klawiszy) w aplikacjach korzystających z nowoczesnych zestawów narzędzi GUI, takich jak Gnome-terminal i Firefox, kopiuj / wklej ze schowka.

Istnieją narzędzia ułatwiające pracę z zaznaczeniami. W szczególności, jeśli chcesz mieć tylko jeden wybór skopiowany do tego, czy wybierasz go myszką, czy naciskasz Ctrl+ C, możesz uruchomić automatyczny przełącznik (uruchomić go z .xinitrcprogramów startowych środowiska komputerowego lub z niego), który wykrywa, kiedy coś jest kopiowane do jeden z zaznaczeń i automatycznie kopiuje go do drugiego.

Gilles „SO- przestań być zły”
źródło
20

Aby wkleić tekst, w urxvt / rxvt-unicode możesz użyć middle buttondo wklejenia podstawowego wyboru i Alt/Meta+ middle buttondo wklejenia SCHOWKA.

Aby skopiować, wystarczy zaznaczyć tekst w terminalu, aby skopiować go do wyboru PODSTAWOWEGO. Jednak do skopiowania do SCHOWKA potrzebne są pewne prace. Połączyłem informacje ze strony Archlinux, którą podłączyłeś, ze skryptami zawartymi w rxvt-unicode-9.19 i skończyłem ze skryptem takim: https://gist.github.com/xkr47/98224ed6b0860cb55ec0 . Pozwala użyć Ctrl+ Insertlub Ctrl+ Shift+ c`, aby skopiować aktualnie zaznaczony tekst do SCHOWKA.

Mam nadzieję że to pomoże.

Dla przypomnienia, nie uruchamiam również środowiska pulpitu; używając Sawfish jako menedżera okien.

Wskazówka : Możesz monitorować schowek w terminalu za pomocą programu „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

lub używając programu „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
źródło
Temat poboczny
Jonas Berlin
Alt / Meta + środkowy przycisk działa dla mnie w Debianie
Jing
To jest poprawna odpowiedź.
Winny
15

Istnieją wbudowane mechanizmy kopiowania / wklejania do / z PRIMARY(są używane, gdy użytkownik wybiera niektóre dane) i CLIPBOARD(są używane, gdy użytkownik wybiera niektóre dane i wyraźnie żąda ich „skopiowania” do schowka, na przykład przez wywołanie „Kopiuj” w menu „Edycja” aplikacji). Więcej informacji na temat różnych schowków w X .

Dla CLIPBOARD bufora jest to CTRL+META+C(co jest w CTRL+ALT+Cprzypadku standardowej klawiatury komputera) do kopiowania i CTRL+META+V( CTRL+ALT+V) do wklejania.

Cytat od człowieka urxvt :

WYBÓR: WYBÓR I WKLEJANIE TEKSTU

Zachowanie mechanizmu zaznaczania i wstawiania / wklejania tekstu jest podobne do xterm (1).

Wybieranie :

Kliknij lewym przyciskiem myszy na początku regionu, przeciągnij na koniec regionu i puść; Kliknij prawym przyciskiem myszy, aby rozszerzyć zaznaczony region; Kliknij dwukrotnie lewym przyciskiem myszy, aby wybrać słowo; Trzykrotnie kliknij lewym przyciskiem myszy, aby wybrać całą linię logiczną (która może obejmować wiele linii ekranu), chyba że zmodyfikowano ją za pomocą trzech słów kluczowych.

Rozpoczęcie zaznaczenia podczas naciskania klawisza Meta (lub Meta + Ctrl) (Kompiluj: falbanki) spowoduje utworzenie prostokątnego zaznaczenia zamiast normalnego. W tym trybie każdy wybrany wiersz staje się własną linią w zaznaczeniu, a końcowe białe znaki są wizualnie podkreślone i usuwane z zaznaczenia.

Wklejanie :

Naciśnięcie i zwolnienie środkowego przycisku myszy w oknie urxvt powoduje, że wartość wyboru PODSTAWOWEGO (lub SCHOWKA z modyfikatorem Meta) jest wstawiana tak, jakby była wpisana na klawiaturze.

Naciśnięcie Shift-Insert powoduje wstawienie również wartości wyboru PODSTAWOWEGO.

rxvt-unicode zapewnia również wiązania Ctrl-Meta-c i interakcję z wyborem SCHOWKA. Pierwsze wiązanie powoduje skopiowanie wartości zaznaczenia wewnętrznego do zaznaczenia SCHOWKA, natomiast drugie wiązanie powoduje wstawienie wartości zaznaczenia SCHOWEK.

petRUShka
źródło
Dlaczego nigdy nie sądzę, że rozwiązania są na stronie podręcznika? Teraz wszystko jest dla mnie jasne! Dziękuję Ci!
Enrico Maria De Angelis,
1
Nawiasem mówiąc, ciągle zapominałem, do którego z podstawowych zaznaczeń i schowka jest wklejany, gdy wybieram coś przed kliknięciem prawym przyciskiem myszy i wklejeniem. Teraz jest jasne: przedPODSTAWOWE .
Enrico Maria De Angelis,
12

Możesz wykonać kopiowanie urxvt zarówno do Podstawowego, jak i Schowka za pomocą rozszerzenia perl wyboru do schowka. Dzięki temu są zsynchronizowane, więc wystarczy skopiować raz w urxvt i powinno działać w aplikacjach, które używają jednego z nich.

URxvt.perl-ext-common: selection-to-clipboard
zdegenerowany Joe
źródło
2
Czy mogę zmienić skrót dla tego rozszerzenia? Nie podoba mi się domyślny ctrl-alt-c / v. Chciałbym mieć ctrl-shift-c / v.
Trismegistos,
3
@Trismegistos, zajrzyj tutaj
Coder