Є кілька способів. Деякі із згаданих способів включають (я думаю) 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.