Как скопировать текст из «экрана» программы в буфер обмена?

13

Я хочу скопировать текст с экрана в буфер обмена. Я знаю, как войти в режим копирования и вставки на экране, но я хочу, чтобы этот текст попал в мой буфер обмена, чтобы, например, я мог вставить его в браузер.

Как мне это сделать? Благодарность!

Рамон Тайаг
источник

Ответы:

8

В большинстве программ вы выбираете текст и нажимаете Ctrl+, Cчтобы скопировать его. Вставка текста будет осуществляться нажатием Ctrl+ V. В программе эмулятора терминала, Ctrl+ Cимеет особое значение, он по умолчанию прерывает (останавливает) программы.

В программе эмулятора терминала могут быть определены другие ярлыки. Например, Konsole и Gnome Terminal используют Ctrl+ Shift+ Cдля копирования выделенного текста. Или выберите текст и скопируйте его, используя параметр « Копировать» в меню « Правка» или в контекстном меню.

Если вывод вашей программы большой, вы можете включить буфер обратной прокрутки screen. Это можно сделать, добавив следующую строку в ~/.screenrcфайл:

termcapinfo xterm ti@:te@
Lekensteyn
источник
2
Это не сработает, если текст, который вы пытаетесь скопировать с экрана GNU, превышает фактическую площадь экрана
Marco Ceppi
Я обычно прокручиваю назад (или просто продолжаю прокручивать при выборе).
Лекенштейн
Вы имеете в виду, когда в режиме копирования на экране?
Марко Чеппи
3
Нет, при выборе текста в обычном режиме с помощью мыши. Чтобы это работало, вам нужно поместить termcapinfo xterm ti@:te@в файл ~ / .screenrc, чтобы разрешить прокрутку. Если у вас нет .screenrc, получите мой screenrc от lekensteyn.nl/files/screenrc
Lekensteyn
Ах, вот и все, спасибо за разъяснения. Вы можете добавить это к своему ответу.
Марко Чеппи
10

Для простой и грязной реализации установите пакет xsel, который разрешает взаимодействие командной строки с X буфером обмена, затем поместите эти строки в свой~/.screenrc

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

затем перезагрузите screen.

Теперь, когда вы выбираете что-то в режиме screenкопирования / прокрутки и записываете буфер вставки в файл с помощью C- a >, вы можете перейти в браузер и вставить содержимое буфера обмена как обычно (например, с помощью Ctrl- V).

Для обратного, скопируйте что-нибудь в свой браузер с помощью Ctrl- C, затем перейдите screenи прочитайте буфер обмена с новой командой C- a y, затем прочитайте файл обмена экрана в буфер вставки с помощью C- a <, наконец, вставьте туда, где вы хотите C- a ].

Чтобы это работало, переменная DISPLAYдолжна быть правильно установлена, и у вас должен быть доступ к X-серверу. Это не проблема, когда вы работаете в терминале, работающем на том же X-сервере, но если вы работаете screenв виртуальном терминале, например, tty1, то вам может потребоваться запустить xhost +на стороне X export DISPLAY=:0или аналогичную на терминале, прежде чем запускать screen,

Как видите, это не просто и не пуленепробиваемое, но я надеюсь, что это может помочь.

Этот ответ частично вдохновлен синхронизацией буфера вставки экрана GNU и выбором X

enzotib
источник
Это xhost +ужасный совет. Это позволяет любому пользователю Интернета захватывать сеанс X, захватывать нажатия клавиш, делать снимки экрана и т. Д. Никогда не делайте этого. Есть правильные способы сделать то же самое; до тех пор, пока вы находитесь на одном хосте и используете один и тот же homedir, просто настройка $DISPLAYдолжна работать.
R .. GitHub ОСТАНОВИТЬ ЛЬДА
0

Просто используйте операцию копирования в вашем терминальном приложении. Если вы используете, например, gnome-терминал, просто выберите test и используйте контекстное меню -> copy.

Михал Шрайер
источник
1
Что если в терминальном приложении нет контекстного меню? Что если у него нет операции копирования? Я не понизил голос, потому что я не верю, что это заслуживает большего, чем один.
djeikyb