Как скопировать буфер копии экрана GNU в буфер обмена
При использовании экрана GNU мы можем работать с буфером прокрутки, также называемым "режимом копирования с помощью команды Ctrl+a+[
.
В этом случае мы можем скопировать текст в буфер , нажав space
, выбрав текст и снова нажав space
.
Есть ли способ скопировать этот текст из буферной копии экрана в буфер обмена X?
В моем случае я использую Ubuntu 12.04 с gnome и Xorg.
Ответы
Ответ 1
Вы можете использовать инструмент буфера обмена CLI, например xsel
или pbpaste
и утилиту cat
для захвата содержимого из STDIN. Шаги по Linux с xsel
следующие:
- Скопируйте текст из сеанса экрана в буфер копии экрана GNU.
- Запустите эту команду на экране:
cat | xsel -b
- Если
xsel
не сообщило о какой-либо ошибке, теперь буфера копирования экрана сброса в STDIN: Ctrl+a+]
- Отправьте EOF на
cat
, чтобы завершить его: Ctrl+d
В этот момент содержимое буферной копии экрана должно находиться в вашем буфере обмена.
EDIT: как и для всех X-программ, xsel
должен знать, как связаться с вашим X-сервером, чтобы получить доступ к буферу. У вас должна быть соответствующая переменная среды DISPLAY
.
Ответ 2
Этот ответ относится к OS X.
После копирования желаемого текста в буфер палитры экрана GNU с помощью режима копирования выполните следующие действия:
- В любом из ваших окон экрана введите
pbcopy <enter>
.
- Затем вставьте текст в терминал с помощью экрана GNU вставьте команду (
Ctrl-a ]
, если вы не изменили свой escape-ключ).
- Если текст не заканчивается в новой строке, нажмите
<enter>
, чтобы вставить его.
- Наконец, нажмите
Ctrl-d
, чтобы вызвать pbcopy
для ввода текста в системный буфер обмена.
Затем вы можете вставить текст в другом месте в OS X, как обычно, с помощью Command-v
или эквивалентного меню.
Ответ 3
Существует более простой и менее ручной способ сделать это. В вашем экране .rc файл добавьте следующую строку:
bindkey -m ' ' eval 'stuff \040' 'writebuf' 'exec sh -c "/usr/bin/pbcopy < /tmp/screen-exchange"'
Как использовать функцию копирования:
-
screen -c path/to/screen/config.rc
- Нажмите Ctrl + A, затем Esc, чтобы перейти в режим копирования.
- Прокрутите текстовый буфер и найдите место, в котором вы хотите оставить маркер начала для копирования, затем нажмите пробел.
- Прокрутите вниз и выберите текст, который вы хотите скопировать. Когда вы закончите, снова нажмите пробел.
- Текст теперь будет в вашем буфере обмена.
Ответ 4
Этот ответ работает только для сценария, когда конечная цель заключается в том, чтобы сразу вставить содержимое скопированного буфера.
Самый простой способ сделать это - разбивать экран на два региона. Вы можете сделать это, нажав CTRL + a, затем | 'Это не i. Это знак PIPE на клавиатуре
Нажмите CTRL + a, затем TAB, чтобы переключиться во вторую область, CTRL + a, затем c, чтобы создать новый сеанс во второй области.
Если вы хотите скопировать из nano и вставить в терминал, откройте файл в nano в левой области, нажмите CTRL + a, затем ESC, выделите начальную точку вашего места копирования и нажмите SPACE, выберите текст, прокрутив до конечной точки и снова нажмите SPACE, чтобы отметить копию.
Теперь вам нужно только нажать CTRL + a, затем TAB, чтобы перейти в область справа и нажать CTRL + a, затем ].
Текст будет выписан в командной строке. Обратите внимание, что вы также можете проверить параметр hardcopy, если хотите записать непосредственно в файл.
Ответ 5
Если вам просто немного информации, которую вы хотите скопировать, просто выделите ее мышью, а затем вставьте ее туда, где хотите.
Если вы пытаетесь получить много информации, сеанс экрана может быть зарегистрирован в файле, а затем вы можете скопировать его из файла или немного его очистить и использовать его для получения инструкций о выполнении действий
Ответ 6
Наконец, сегодня я нашел решение с мышью:
Удерживая нажатой клавишу Ctrl и , щелкните правой кнопкой мыши с помощью мыши.
Скопируйте/вставьте контекстное меню.
Некоторые экраны в https://michalzuber.wordpress.com/2015/01/28/gnu-screen-copy-paste-with-mouse/