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


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.