Як я можу скопіювати текст з xterm (Awesome, Debian, VirtualBox)?


15

Я запустив мінімальну установку Debian всередині екземпляра VirtualBox, встановив менеджер вікон X11 та Awesome вручну (без будь-якої спеціальної конфігурації) та встановив додатки 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після введення цього файлу.


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
Будь ласка, уважно прочитайте питання. "Перейдіть до програми, в яку ви хочете вставити" - це говорить про те, що ви не помічали, що мені потрібно вставити її в хост ОС.
Макс Янков

Вибачте, у мене немає третьої кнопки миші. Використовуючи трекбол тут
загрожує

2

Виявилося, я не врахував того, що X11 має два буфери: основний та буфер обміну . Мій текст з xterm був скопійований у основний буфер, тоді як мені потрібен був у буфері буфера обміну.

Мені вдалося виправити проблему, встановивши parcelliteпакет, запустивши його та налаштувавши його для синхронізації двох буферів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.