Есть пара способов. Некоторые из упомянутых способов включают (я думаю) tmux, screen, vim, emacs и оболочку. Я не знаю emacs или screen, поэтому рассмотрю остальные три.
Tmux
Хотя это и не выбор X, tmux имеет режим копирования, доступный через prefix-[
(prefix
по умолчанию равен Ctrl + B). Буфер, используемый для этого режима, является отдельным и эксклюзивным для tmux, что открывает немало возможностей и делает его более универсальным, чем выбор X в нужных ситуациях.
Чтобы выйти из этого режима, нажмите q; для навигации используйте привязку vim
или emacs
(по умолчанию = vim), поэтому hjkl
для движения, v/V/C-v
для выбора символа / строки / блока и т. д. Когда у вас есть выбор, нажмите Enter, чтобы скопировать и выйти режим.
Чтобы вставить из этого буфера, используйте prefix-]
.
Оболочка
Кажется, что любая установка X11
по умолчанию идет с двумя программами: xclip
и xsel
(примерно так же, как и с startx
и xinit
). В большинстве других ответов упоминается xclip
, и мне очень нравится xsel
за его краткость, поэтому я собираюсь рассказать о xsel
.
Из xsel (1x):
Варианты ввода
-a, --append
добавить к выделенному стандартный ввод. Подразумевает -i.
-f, - следовать
добавлять к выделению по мере роста стандартного ввода. Подразумевает -i.
-i, --input
читать стандартный ввод в выборку.
Варианты вывода
-o, --output
записать выделение в стандартный вывод.
Варианты действий
-c, --clear
очистить выделение. Отменяет все параметры ввода.
-d, --delete
Запросить удаление текущего выделения. Это не только очищает выделение, но и запрашивает у программы, в которой находится выделение, выбранное содержимое. Отменяет все параметры ввода.
Варианты выбора
-p, --primary
работать с ПЕРВИЧНЫМ выбором (по умолчанию).
-s, --secondary
работать с ВТОРИЧНЫМ выбором.
-b, --clipboard
работать с выбором БУФТА ОБМЕНА.
И это все, что вам нужно знать. p
(или ничего) для PRIMARY
, s
для SECONDARY
, b
для CLIPBOARD
, o
для вывода.
Пример: скажем, я хочу скопировать вывод foo
из TTY и вставить его на веб-страницу для отчета об ошибке. Для этого было бы идеально скопировать в / из сеанса TTY / X. Возникает вопрос: как получить доступ к буферу обмена из TTY?
В этом примере мы предполагаем, что сеанс X отображается :1
.
$ foo -v
Error: not a real TTY
details:
blah blah @ 0x0000000040abeaf4
blah blah @ 0x0000000040abeaf8
blah blah @ 0x0000000040abeafc
blah blah @ 0x0000000040abeb00
...
$ foo -v | DISPLAY=:1 xsel -b # copies it into clipboard of display :1
Тогда я могу Ctrl-V
в форму, как обычно.
Теперь предположим, что кто-то на сайте поддержки дает мне команду бежать, чтобы исправить проблему. Это сложно и долго.
$ DISPLAY=:1 xsel -bo
sudo foo --update --clear-cache --source-list="http://foo-software.com/repository/foo/debian/ubuntu/xenial/164914519191464/sources.txt"
$ $(DISPLAY=:1 xsel -bo)
Password for braden:
UPDATING %%%%%%%%%%%%%%%%%%%%%%% 100.00%
Clearing cache...
Fetching sources...
Reticulating splines...
Watering trees...
Climbing mountains...
Looking advanced...
Done.
$ foo
Thank you for your order. A pizza should arrive at your house in the next 20 minutes. Your total is $6.99
Заказ пиццы кажется эффективным использованием командной строки.
... идем дальше.
Vim
Если скомпилирован с +clipboard
(это важно! Проверьте свой vim --version
), Vim должен иметь доступ к выбору X PRIMARY
и CLIPBOARD
. Эти два выбора доступны из регистров *
и +
, соответственно, и могут быть записаны и прочитаны в любое время так же, как и любой другой регистр. Например:
:%y+ ; copy/yank (y) everything (%) into the CLIPBOARD selection (+)
"+p ; select (") the CLIPBOARD selection (+) and paste/put it
ggVG"+y ; Alternative version of the first example
Если ваша копия vim напрямую не поддерживает доступ к X-выборкам, это еще не конец света. Вы можете просто использовать технику xsel
, как описано в последнем разделе.
:r ! xsel -bo ; read (r) from the stdout of (!) `xsel -bo`
:w ! xsel -b ; write (w) to the stdin of (!) `xsel -b`
Свяжите пару комбинаций клавиш, и все будет хорошо.
person
Braden Best
schedule
11.05.2017
:%y+
в vim, что на языке vim означает копирование (копирование) всех строк в регистр «+» (буфер обмена XPRIMARY
). Вы можете заменить%
диапазоном, если хотите конкретизировать. Но есть три предостережения: 1. Теперь вам нужно сохранить любой текст в файл, прежде чем вы сможете его скопировать. Это контрастирует с командойxclip
, упомянутой в ответах. 2. Если вы еще не знаете, как работать с vim, это может быть утомительно. 3. Вы можете сделать это, только если при компиляции vim включена определенная функция. Если вы устанавливаете GVim, он должен быть включен по умолчанию как в графическом интерфейсе, так и в терминальных экземплярах vim. - person Braden Best   schedule 22.10.2015xclip
. Ваш ответ сработал как шарм. - person HankCa   schedule 11.05.2017:%y+
, но хорошо, у вас есть все основы! Хороший. - person HankCa   schedule 15.05.2017ls
:ls | xclip -i -selection clipboard
. - person Antonio Feitosa   schedule 04.12.2020