Як скопіювати текст із програми "екран" у буфер обміну?


13

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

Як це зробити? Спасибі!

Відповіді:


8

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

У вашій програмі термінального емулятора можуть бути визначені інші ярлики. Наприклад, Konsole та Gnome Terminal використовують Ctrl+ Shift+ Cдля копіювання вибраного тексту. Крім того, виберіть текст і скопіюйте його, скориставшись опцією « Копіювати» в меню « Правка » або в контекстному меню.

Якщо обсяг вашої програми великий, ви можете увімкнути буфер прокрутки screen. Це можна зробити, додавши до ~/.screenrcфайлу нижче рядок :

termcapinfo xterm ti@:te@

2
Це не спрацює, якщо текст, який ви намагаєтесь скопіювати з GNU Screen, перевищує фактичну нерухомість екрана
— Marco Ceppi

Я зазвичай прокручую назад (або просто продовжую прокрутку під час вибору).
— Лекенштейн

Ви маєте на увазі, перебуваючи в режимі копіювання на екрані?
— Марко Цеппі

3
Ні, коли вибираєте текст у звичайному режимі за допомогою миші. Щоб це працювало, вам потрібно помістити termcapinfo xterm ti@:te@файл ~ / .screenrc, щоб дозволити прокрутку. Якщо у вас немає .screenrc, дістаньте мій screenrc від lekensteyn.nl/files/screenrc
— Lekensteyn

Ах, це все тоді, дякую за роз’яснення. Ви можете додати це до своєї відповіді.
— Marco Ceppi

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


xhost +Страшний рада. Це дозволяє будь-кому в Інтернеті викрасти ваш X сеанс, фіксувати натискання клавіш, робити знімки екрана тощо. Ніколи цього не робіть. Є правильні способи зробити те саме; якщо ви знаходитесь на одному хості та використовуєте той самий hededir, просто налаштування $DISPLAYмає працювати.
— R .. GitHub СТОП ДОПОМОГАТИ

0

Просто використовуйте операцію копіювання у своїй програмі терміналу. Якщо ви, наприклад, використовуєте gnome-terminal, просто виберіть тест і скористайтеся контекстним меню -> копіювати.


1
Що робити, якщо в додатку термінала немає контекстного меню? Що робити, якщо в ній немає операції копіювання? Я не спростував, тому що я не вірю, що це заслуговує більше одного.
— djeikyb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.