О копипасте
2016-08-21
А вы знаете, что в Unix, а точнее в X Window, есть аж три буфера обмена? Primary, Secondary и Clipboard.
Primary возник исторически.
Он используется при вставке средней кнопкой мыши.
Это когда вы выделяете где-то текст,
а потом жмёте среднюю кнопочку мыши,
и выделенный где-то там текст
вставляется куда-то сюда,
где находится текстовый курсор.
Это действительно работает,
но почему-то
только опытные юниксоиды этим пользуются.
Это даже работает в текстовой консоли,
если там есть поддержка мыши
(пакет gpm
в Ubuntu).
Secondary, видимо, возник для дополнения Primary. Никаких кнопочек для прямого доступа к нему нет. Но он вполне доступен программно, и можно, например, поменять Primary и Secondary местами.
Clipboard — это знакомый по альтернативным ОС
буфер обмена.
В который можно скопировать по Ctrl+C
или Ctrl+Ins
.
И из которого можно вставить по Ctrl+V
или Shift+Ins
.
Про сочетания клавиш с Insert
,
похоже,
все тоже начинают забывать.
Но они работают.
С иксовыми буферами обмена можно работать из командной строки.
Иногда это даже очень удобно,
если работаешь в графическом терминале,
и надо скопировать содержимое какого-нибудь файлика.
И для этого есть аж две программки:
xclip
и
xsel
.
Работают они немного по-разному,
и по-разному глючат на не-ASCII символах.
% cat ~/.ssh/id_rsa.pub | xclip -selection clipboard
% xclip -o -selection clipboard > paste_file
% cat ~/.ssh/id_rsa.pub | xsel -ib
% xsel -ob > paste_file
Программно приходилось пользовать буфер обмена только из Python.
Тут есть чудесный модуль pyperclip.
Он даже кроссплатформенный.
Под Linux он юзает эти наши самые xclip
или xsel
(у меня в данном случае xclip работает корректнее).
import pyperclip
pyperclip.copy(text)
pasted = pyperclip.paste()
А ещё есть отдельная категория софта —
менеджеры буферов обмена.
Это то,
что,
например,
реализовано в IntelliJ IDEA,
когда вы нажимаете Ctrl+Shift+V
.
История буфера обмена.
У вас для вставки будет доступно не одно единственное последнее значение,
которое вы скопировали в буфер,
а n-цать предыдущих скопированных значений.
Это очень удобно,
когда вам нужно перенести несколько кусочков текста
в разные места в разном порядке.
Лично я так привык к этим менеджерам,
что не могу без них обходиться
даже на андроидном телефоне.
Под GTK, Unity и иже с ними
имеется Parcellite.
Просто ставите,
засовываете в автостарт
(если сам там не объявился),
вешаете хотки показа истории на какой-нибудь экзотический Ctrl+Alt+H
,
и пользуетесь.
Хоть в Unity иконка Parcellite и не видна в трее,
это не важно.
Жмёте где угодно хотки и,
пожалуйста,
вот она история буфера обмена.
Для KDE, говорят, имеется аналогичный Klipper.
А для Android есть отличный Clipper. Даже с возможностью синхронизации буферов обмена между устройствами в платной версии.
Будьте осторожны с менеджерами буфера обмена. Если вы, ай-ай-ай, копипастите пароль, он будет какое-то время висеть в истории. Да ещё и синхронизироваться. Поэтому правильные менеджеры позволяют почистить историю.
Удачного копипаста.