Є кілька способів. Деякі із згаданих способів включають (я думаю) tmux, екран, vim, emacs та оболонку. Я не знаю emacs або екран, тому перейду інші три.
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) :
Параметри введення
-а, --додавати
додати стандартний вхід до вибору. Наслідки -і .
-f, - далі
додавати до вибору при збільшенні стандартного введення. Наслідки -і .
-i, --вхід
читати стандартне введення у вибір.
Варіанти виводу
-o, - вихід
записати виділення на стандартний вихід.
Варіанти дій
-c, - ясно
очистити вибір. Переосмислює всі параметри введення.
-d, - видалити
Попросіть видалити поточний вибір. Це не тільки очищає вибір, але й запитує програму, в якій знаходиться вибір, щоб вибраний вміст було видалено. Переосмислює всі параметри введення.
Параметри вибору
-p, - первинний
працювати з вибором PRIMARY (за замовчуванням).
-s, - вторинний
оперувати за вибором SECONDARY.
-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. Якщо ви ще не знаєте, як зробити вим, це може бути нудно. 3. Ви можете це зробити, лише якщо під час компіляції vim увімкнено певну функцію. Якщо ви встановите GVim, він повинен бути включений за замовчуванням як в GUI, так і в термінальних екземплярах vim.