Jak skopiować tekst z „ekranu” programu do schowka?

13

Chcę skopiować tekst z ekranu do schowka. Wiem, jak przejść do trybu kopiowania i wklejania na ekranie, ale chcę, aby ten tekst trafił do mojego schowka, aby mógł na przykład wkleić go w przeglądarce.

Jak mam to zrobic? Dzięki!

Ramon Tayag
źródło

Odpowiedzi:

8

W większości programów zaznaczasz tekst i naciskasz Ctrl+, Caby go skopiować. Wklejanie tekstu odbywa się poprzez naciśnięcie Ctrl+ V. W programie emulatora terminali Ctrl+ Cma specjalne znaczenie, domyślnie przerywa (zatrzymuje) programy.

Program emulatora terminala może mieć zdefiniowane inne skróty. Na przykład Konsole i Gnome Terminal używają Ctrl+ Shift+ Cdo kopiowania zaznaczonego tekstu. Możesz też zaznaczyć tekst i skopiować go, korzystając z opcji Kopiuj w menu Edycja lub menu kontekstowym.

Jeśli wyjście twojego programu jest duże, możesz chcieć włączyć bufor przewijania screen. Można to zrobić, dodając poniższy wiersz do ~/.screenrcpliku:

termcapinfo xterm ti@:te@
Lekensteyn
źródło
2
To nie zadziała, jeśli tekst, który próbujesz skopiować z ekranu GNU, przekracza rzeczywistą powierzchnię ekranu
Marco Ceppi
Zwykle przewijam wtedy (lub po prostu kontynuuję przewijanie podczas wybierania).
Lekensteyn,
Masz na myśli, gdy jesteś w trybie kopiowania na ekranie?
Marco Ceppi
3
Nie, przy zaznaczaniu tekstu w trybie zwykłym za pomocą myszy. Aby to zadziałało, musisz umieścić termcapinfo xterm ti@:te@plik ~ / .screenrc, aby umożliwić przewijanie. Jeśli nie masz .screenrc, pobierz mój screenrc z lekensteyn.nl/files/screenrc
Lekensteyn,
Ach, to tyle, dziękuję za wyjaśnienia. Możesz dodać to do swojej odpowiedzi.
Marco Ceppi
10

W przypadku surowej i brudnej implementacji zainstaluj pakiet xsel, który umożliwia interakcję wiersza poleceń ze schowkiem X, a następnie umieść te wiersze w swoim~/.screenrc

bind > eval writebuf "exec sh -c 'xsel -nbi </tmp/screen-exchange'"
bind y eval "exec sh -c 'xsel -bo >/tmp/screen-exchange'"

następnie uruchom ponownie screen.

Teraz, gdy wybierzesz coś w screentrybie kopiowania / przewijania i zapiszesz bufor wklejania do pliku za pomocą C- a >, możesz przejść do przeglądarki i wkleić zawartość schowka jak zwykle (na przykład za pomocą Ctrl- V).

Na odwrót, skopiuj coś w przeglądarce za pomocą Ctrl- C, a następnie przejdź do screenschowka za pomocą nowego polecenia C- a y, a następnie wczytaj plik wymiany ekranu do bufora wklejania za pomocą C- a <, w końcu wklej gdziekolwiek chcesz C- a ].

Aby to zadziałało, zmienna DISPLAYmusi być poprawnie ustawiona i musisz mieć dostęp do serwera X. Nie stanowi to problemu, jeśli korzystasz z terminala działającego na tym samym serwerze X, ale jeśli uruchamiasz się screenw terminalu wirtualnym, np. Tty1, może być konieczne uruchomienie xhost +strony X export DISPLAY=:0lub podobnej na terminalu przed uruchomieniem screen.

Jak widać, nie jest to proste i nie jest kuloodporne, ale mam nadzieję, że może pomóc.

Ta odpowiedź jest częściowo zainspirowana synchronizacją bufora wklejania ekranu GNU i wyboru X.

enzotib
źródło
To xhost +okropna rada. Pozwala każdemu w Internecie na przejęcie sesji X, przechwycenie naciśnięć klawiszy, robienie zrzutów ekranu itp. Nigdy tego nie rób. Istnieją prawidłowe sposoby na zrobienie tego samego; tak długo, jak jesteś na tym samym hoście i używasz tego samego homedir, tylko ustawienie $DISPLAYpowinno działać.
R .. GitHub ZATRZYMAJ LÓD
0

Wystarczy użyć operacji kopiowania w aplikacji terminalowej. Jeśli używasz na przykład gnome-terminal, po prostu wybierz test i użyj menu kontekstowego -> kopiuj.

Michał Šrajer
źródło
1
Co jeśli aplikacja terminalowa nie ma menu kontekstowego? Co jeśli nie ma operacji kopiowania? Nie przegłosowałem, ponieważ nie wierzę, że zasługuje na więcej niż jeden.
djeikyb,