Есть несколько способов. Некоторые из упомянутых способов включают (я думаю) 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 .
-ф,
добавить к выбору по мере роста стандартного ввода. Подразумевает -i .
-i, --input
читать стандартный ввод в выбор.
Варианты вывода
-o, --output
запишите выбор в стандартный вывод.
Варианты действий
-c, --clear
очистить выбор. Переопределяет все параметры ввода.
-d, --delete
Запрос, чтобы текущий выбор был удален. Это не только очищает выделение, но и запрашивает программу, в которой находится выделение, об удалении выделенного содержимого. Переопределяет все параметры ввода.
Варианты выбора
-p, --primary
работать на первичном выборе (по умолчанию).
-с, --средний
оперируйте ВТОРИЧНЫМ отбором.
-b, --clipboard
работать с выбором 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
Заказ пиццы кажется продуктивным использованием командной строки.
... двигаться дальше.
напор
Если скомпилировано с +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`
Привязать пару комбинаций клавиш, и вы должны быть хорошими.
:%y+
в vim, который является vim-говорить для "yank (скопировать) все строки в регистр '+' (PRIMARY
буфер обмена X )". Вы можете заменить%
диапазон, если хотите быть конкретным. Но есть три предостережения: 1. Теперь вы должны сохранить любой текст в файл, прежде чем сможете скопировать его. Это в отличие отxclip
команды, упомянутой в ответах. 2. Если вы еще не знаете, как vim, это может быть утомительно. 3. Вы можете сделать это, только если определенная функция включена при компиляции vim. Если вы устанавливаете GVim, он должен быть включен по умолчанию как в графическом интерфейсе, так и в терминальных экземплярах vim.