X11

如何從 xterm(Awesome、Debian、VirtualBox)複製文本?

  • December 16, 2020

我在 VirtualBox 實例中執行了最小的 Debian 安裝,手動安裝了 X11 和 Awesome 視窗管理器(還沒有任何自定義配置)並安裝了 VirtualBox 添加(並在設置中啟用了共享剪貼板)。但是,從 xterm 終端複製粘貼文本似乎仍然不起作用:CTRL+C作為信號發送到終端,並且Shift+Insert插入我選擇的文本(這可能意味著它以某種方式複製到某個緩衝區),但它仍然無法從主機作業系統中使用。

X11 使用兩個緩衝區:PRIMARYCLIPBOARD. 要複製/粘貼到CLIPBOARD緩衝區,您可以經常使用CTRL-CCTRL-V. 您可以通過選擇文本插入PRIMARY緩衝區並通過按滑鼠中鍵從其中粘貼。

如果要使用CLIPBOARD緩衝區,請將其放入~/.Xresources文件中,然後使用Ctrl++和Shift++從xterm中的緩衝區複製/粘貼:C``Ctrl``Shift``V``CLIPBOARD

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

您需要xrdb -merge ~/.Xresources在將其放入文件後執行。

無需修改 xterm 翻譯資源即可將數據複製到 Firefox 或從 Firefox 複製數據,除非您更喜歡使用鍵盤來幫助完成該過程。

自 2006 年以來, xterm 具有一項功能,可讓您在選擇(標準)和(Firefox 等)selectToClipboard之間切換。PRIMARY****CLIPBOARD

因為有些程序確實使用主選擇,有些不使用,所以它是 xterm ( control``middle-mouse) 中的一個菜單項:

在菜單條目中顯示 selectToClipboard

調整 GNOME 應用程序等控製字元的建議可以讓您使用鍵盤,同時讓菜單在兩種類型的選擇之間切換:

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

雖然添加shift``Insert可能更接近最初的意圖:

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)

一個普通control``C的通常分配給一個信號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

進一步閱讀:

引用自:https://unix.stackexchange.com/questions/225062