В этой теме верхний ответ показывает, как скопировать текст, который был ранее выделен мышью на терминале gnome, в буфер обмена в X11.
Мой вопрос: скажем, я копирую часть текста с терминала, используя bash set-mark и копирую сочетания клавиш (то есть set-mark
+ M-w
). Можно ли поделиться этим буфером обмена с X11?
РЕДАКТИРОВАТЬ : В первоначальном вопросе я говорил о совместном использовании буфера обмена с GNOME, но, как указывает Жиль ниже, GNOME специально не имеет буфера обмена (это общее для X), поэтому я обновил вопрос.
Ответы:
Буфер обмена Bash является внутренним для bash, bash не подключается к X-серверу.
Что вы могли бы сделать, это изменить значение,
M-w
чтобы скопировать выделение в буфер обмена X в дополнение к внутреннему буферу обмена bash. Однако интеграция с bash довольно слабая, и я не думаю, что есть способ получить доступ к информации о регионе или к буферу обмена из кода bash. Вы можете сделать привязку клавиш, чтобы скопировать всю строку в буфер обмена X.²Если вы хотите делать что-то необычное в оболочке, переключитесь на zsh, который (помимо других преимуществ) имеет гораздо лучшую интеграцию между редактором строк и языком сценариев.
¹ Gnome специально не имеет буфера обмена, это общее для X.
² Начиная с bash 4.1, в коде синтаксического анализа ключа есть ошибка: связанные последовательности ключей
bind -x
могут содержать не более двух символов. Я думаю, что bash 4.2 исправляет некоторые случаи более длинных префиксов, но не все из них; Я не исследовал детали.источник
zsh
.copy_line_to_x_clipboard
именно то, чего мне не хватало очень долгое время: копия, эквивалентная shift + insert. Я изменил на ctrl-x (bind -x '"\C-x"
), потому чтоEsc
это слишком далеко от моего вкуса (и Cc будет самым тупым возможным выбором).esc
ним символ, поэтому вы можете ввести его какalt-w
.@ Жиль уже дал отличный ответ. Я просто хотел бы упомянуть о существовании
xclip
, которое также является очень полезным способом скопировать вывод терминала в буфер обмена X, просто добавив в него что-нибудь:источник
xclip
по умолчанию копируется в основной буфер. Чтобы использовать буфер обмена, используйтеxclip -selection clipboard
.