Wie kopiere ich Text vom Programmbildschirm in meine Zwischenablage?

12

Ich möchte Text vom Bildschirm in meine Zwischenablage kopieren . Ich weiß, wie man auf dem Bildschirm in den Kopier- und Einfügemodus wechselt, aber ich möchte, dass dieser Text in meine Zwischenablage verschoben wird, damit ich ihn beispielsweise im Browser einfügen kann.

Wie mache ich das? Vielen Dank!

Ramon Tayag
quelle

Antworten:

7

In den meisten Programmen wählen Sie Text aus und drücken Ctrl+, um ihn Czu kopieren. Das Einfügen von Text erfolgt durch Drücken von Ctrl+ V. Im Terminalemulatorprogramm hat Ctrl+ Ceine besondere Bedeutung, es unterbricht (stoppt) standardmäßig Programme.

In Ihrem Terminalemulatorprogramm sind möglicherweise andere Verknüpfungen definiert. Beispielsweise verwenden Konsole und Gnome Terminal Ctrl+ Shift+ Czum Kopieren des ausgewählten Textes. Alternativ können Sie Text auswählen und mit der Option Kopieren im Menü Bearbeiten oder im Kontextmenü kopieren .

Wenn die Ausgabe Ihres Programms groß ist, möchten Sie möglicherweise den Scrollback-Puffer von aktivieren screen. Dies kann durch Hinzufügen der folgenden Zeile zur ~/.screenrcDatei erfolgen:

termcapinfo xterm ti@:te@
Lekensteyn
quelle
2
Dies funktioniert nicht, wenn der Text, den Sie vom GNU-Bildschirm kopieren möchten, die tatsächliche Bildschirmfläche überschreitet
Marco Ceppi
Normalerweise scrolle ich damals (oder scrolle einfach weiter, während ich auswähle).
Lekensteyn
Du meinst im Kopiermodus auf dem Bildschirm?
Marco Ceppi
2
Nein, wenn Sie Text im regulären Modus mit der Maus auswählen. Damit dies funktioniert, müssen Sie termcapinfo xterm ti@:te@Ihre ~ / .screenrc-Datei einfügen, um einen Bildlauf zu ermöglichen. Wenn Sie keine .screenrc haben, erhalten Sie meine screenrc von lekensteyn.nl/files/screenrc
Lekensteyn
Ah, das war's dann, danke für die Klarstellung. Vielleicht möchten Sie das zu Ihrer Antwort hinzufügen.
Marco Ceppi
10

Installieren Sie für eine rohe und fehlerhafte Implementierung das Paket xsel, das die Befehlszeileninteraktion mit der X-Zwischenablage ermöglicht, und fügen Sie diese Zeilen in Ihre ein~/.screenrc

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

dann neu starten screen.

Wenn Sie nun im screenKopier- / Bildlaufmodus etwas auswählen und mit C- einen Einfügepuffer in eine Datei schreiben a >, können Sie zum Browser wechseln und den Inhalt der Zwischenablage wie gewohnt einfügen (z. B. mit Ctrl- V).

Umgekehrt kopieren Sie etwas in Ihrem Browser mit Ctrl- C, gehen Sie zu screenund lesen Sie die Zwischenablage mit dem neuen Befehl C- a yund lesen Sie dann die Bildschirmaustauschdatei in den Einfügepuffer mit C- a <und fügen Sie sie schließlich ein, wo immer Sie möchten C- a ].

Damit dies funktioniert, DISPLAYmuss die Variable korrekt festgelegt sein und Sie müssen Zugriff auf den X-Server haben. Dies ist kein Problem, wenn Sie sich auf einem Terminal befinden, das auf demselben X-Server ausgeführt wird. Wenn Sie jedoch screenin einem virtuellen Terminal ausgeführt werden, z. B. tty1, müssen Sie möglicherweise vor dem Start xhost +auf der X-Seite und export DISPLAY=:0ähnlichem auf dem Terminal ausgeführt werden screen.

Wie Sie sehen, ist es nicht einfach und nicht kugelsicher, aber ich hoffe, es kann helfen.

Diese Antwort ist teilweise von der Synchronisierung des Einfügepuffers des GNU-Bildschirms und der X-Auswahl inspiriert

Enzotib
quelle
Das xhost +ist ein schrecklicher Rat. Es ermöglicht jedem im Internet , Ihre X-Sitzung zu entführen, Ihre Tastenanschläge zu erfassen, Screenshots zu machen usw. Tun Sie dies niemals . Es gibt richtige Wege, um dasselbe zu tun. Solange Sie sich auf demselben Host befinden und dasselbe Homedir verwenden, sollte nur die Einstellung $DISPLAYfunktionieren.
R .. GitHub STOP HELPING ICE
0

Verwenden Sie einfach den Kopiervorgang in Ihrer Terminalanwendung. Wenn Sie beispielsweise gnome-terminal verwenden, wählen Sie einfach test und verwenden Sie das Kontextmenü -> Kopieren.

Michał Šrajer
quelle
1
Was ist, wenn die Terminalanwendung kein Kontextmenü hat? Was ist, wenn es keinen Kopiervorgang gibt? Ich habe nicht abgelehnt, weil ich nicht glaube, dass es mehr als eins verdient.
Djeikyb