Как я могу скопировать текст из xterm (Awesome, Debian, VirtualBox)?

15

Я запустил минимальную установку Debian внутри экземпляра VirtualBox, вручную установил X11 и Awesome window manager (без какой-либо настраиваемой конфигурации), а также установил дополнения VirtualBox (и включил общий буфер обмена в настройках). Однако копирование-вставка текста из терминала xterm, похоже, все еще не работает: CTRL+ Cотправляется в качестве сигнала на терминал, и Shift+ Insertвставляет выбранный мной текст (что, вероятно, означает, что он каким-то образом скопирован в некоторый буфер), но он все еще недоступен из операционной системы хоста.

Макс Янков
источник

Ответы:

20

X11 использует два буфера: PRIMARYи CLIPBOARD. Для копирования / вставки в CLIPBOARDбуфер вы часто можете использовать CTRL-Cи CTRL-V. Вы можете вставить в PRIMARYбуфер, выделив текст и вставив из него, нажав среднюю кнопку мыши.

Если вы хотите использовать CLIPBOARDбуфер, поместите его в свой ~/.Xresourcesфайл и используйте Ctrl+ Shift+ Cи Ctrl+ Shift+ Vдля копирования / вставки из / в CLIPBOARDбуфер в xterm:

xterm*VT100.Translations: #override \
                 Ctrl Shift <Key>V:    insert-selection(CLIPBOARD) \n\
                 Ctrl Shift <Key>C:    copy-selection(CLIPBOARD)

Вам нужно запустить xrdb ~/.Xresourcesпосле помещения этого в файл.

MichalH
источник
2
Использование xrdb ~/.Xresourcesуничтожит вашу конфигурацию по умолчанию. вместо этого используйтеxrdb -merge ~/.Xresources
xaedes
14

Нет необходимости изменять ресурсы переводов xterm для копирования данных в / из Firefox, если вы не предпочитаете использовать клавиатуру для помощи в этом процессе.

С 2006 года в xterm появилась функция, selectToClipboardпозволяющая переключаться между PRIMARYвыбором (стандартным) и CLIPBOARD(Firefox и т. Д.).

Поскольку некоторые программы используют первичный выбор, а некоторые нет, это пункт меню в xterm ( controlmiddle-mouse):

показать selectToClipboard в меню

Адаптация предложения для управляющих символов, таких как приложения GNOME, позволяет использовать клавиатуру, и в то же время позволяет меню переключаться между двумя типами выбора:

xterm*VT100.Translations: #override \
                 Ctrl Shift <Key>V:    insert-selection(SELECT) \n\
                 Ctrl Shift <Key>C:    copy-selection(SELECT)

хотя добавление shiftInsertможет быть ближе к первоначальному замыслу:

xterm*VT100.Translations: #override \
                 Shift <Key>Insert:    insert-selection(SELECT) \n\
                 Ctrl Shift <Key>V:    insert-selection(SELECT) \n\
                 Ctrl Shift <Key>C:    copy-selection(SELECT)

Равнине controlCобычно присваивается сигнал :INTR

$ stty -a
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

Дальнейшее чтение:

Томас Дики
источник
4
  1. Откройте xtermи выделите текст, который вы хотите скопировать.
  2. Перейдите в приложение, в которое вы хотите вставить курсор мыши, и наведите курсор на поле, в которое хотите вставить.
  3. Нажмите кнопку прокрутки на вашей мыши. (на ноутбуках это можно сделать, одновременно нажав левую и правую кнопку мыши)

Когда вы выделяете текст, он копирует текст в ваш основной буфер. Помните, что если вы выделите любой другой текст перед вставкой, этот текст заменит предыдущее содержимое в основном буфере.

Пешка
источник
1
Пожалуйста, внимательно прочитайте вопрос. «Перейдите к приложению, в которое вы хотите вставить» - это говорит о том, что вы не заметили, что мне нужно было вставить его в хост-систему.
Макс Янков
Извините, у меня нет третьей кнопки мыши. с помощью трекбола здесь
Holms
2

Оказывается, я не учел тот факт, что у X11 есть два буфера: основной и буфер обмена . Мой текст из xterm был скопирован в основной буфер, а я нуждался в буфере буфера обмена.

Я смог решить проблему, установив parcelliteпакет, запустив его и настроив синхронизацию двух буферов.

Макс Янков
источник