使用URxvt复制和粘贴


27

我在debian jessie上使用URxvt 9.20,我正在寻找一种复制和粘贴文本的方式,就像我以前在gnome-terminal上使用的一样(Ctrl+ Insert用于复制,Shift+ Insert用于粘贴)。

它可以不同的urxvt控制台中运行,但是不能在urxvt和iceweasel之间运行。

根据我对手动尝试的archlinux,但它不会工作(尽管我其实不想使用Shift+ Ctrl+ C/ V这是值得一试)。

.Xresources:

! ******************
! urxvt config
! ******************

! Disable Perl extension
! If you do not use the Perl extension features, you can improve the security
! and speed by disabling Perl extensions completely. 
URxvt.perl-ext:
URxvt.perl-ext-common:

! Font spacing
! By default the distance between characters can feel too wide. It's controlled
! by this entry: 
! URxvt.letterSpace: -1

! -- Fonts -- !
URxvt.font:xft:Monospace:pixelsize=13
URxvt.boldfont:xft:Monospace-Bold:pixelsize=13
!URxvt*font:  -xos4-terminus-medium-*-*-*-14-*-*-*-*-*-iso8859-15,xft:terminus:pixelsize:12
!URxvt*boldFont:  -xos4-terminus-bold-*-*-*-14-*-*-*-*-*-iso8859-15,xft:terminus:bold:pixelsize:12
!URxvt*italicFont:  xft:Bitstream Vera Sans Mono:italic:autohint=true:pixelsize=12
!URxvt*boldItalicFont:  xft:Bitstream Vera Sans Mono:bold:italic:autohint=true:pixelsize=12

! Disable scrollbar
!URxvt*scrollBar: false

! Scrollbar style - rxvt (default), plain (most compact), next, or xterm
URxvt.scrollstyle: plain

! Background color
!URxvt*background: black
URxvt*background: #1B1B1B

! Font color
!URxvt*foreground: white
URxvt*foreground: #00FF00

! Other colors
URxvt*color0: black
!URxvt*color1: red3
URxvt*color1: #CD0000
URxvt*color2: green3
!URxvt*color3: yellow3
URxvt*color3: #C4A000
URxvt*color4: blue2
!URxvt*color4: #3465A4
URxvt*color5: magenta3
URxvt*color6: cyan3
URxvt*color7: gray90
URxvt*color8: grey50
URxvt*color9: red
URxvt*color10: green
URxvt*color11: yellow
!URxvt*color12: blue
URxvt*color12: #3465A4
URxvt*color13: magenta
URxvt*color14: cyan
URxvt*color15: white
! ******************
! /urxvt config
! ******************

您知道可以通过使用鼠标选择文本进行复制并通过单击鼠标中键进行粘贴,对吗?如果您不这样做,够了吗?
terdon

2
这里的问题在于,这两个程序使用的X-Windows选择不同,传统程序使用PRIMARYShift + Insert 进行选择,而试图模仿其他系统中的键绑定的新程序会将CLIPBOARD选择的内容粘贴为相同的键绑定。在GTK +中,PRIMARY不使用鼠标就很难粘贴(如单击@terdon,单击中键,如果打开了第三个按钮,则单击鼠标左键和右键)。但是,尽管这解释了为什么程序未在它们之间传递数据,但我想知道为什么Arch Wiki建议不起作用。
njsg 2015年

您是如何尝试ArchWIki的建议的?如果您使用图形登录屏幕来启动X,则需要使用重新加载X资源xrdb(它应该是xrdb ~.Xresources或类似的名称)。无论哪种方式,您都需要重新启动urxvt。在某些发行版中,您可能需要安装带有perl扩展名的单独软件包,但这似乎包含rxvt-unicode在debian 的基本软件包中(尽管我可能会误解)。
njsg 2015年

1
@terdon感谢您的评论。的确可以使用鼠标进行选择并单击中键进行粘贴。las,这不是我想要实现的目标,我想像以前那样使用Ctrl + Insert / Shift + Insert(习惯和口头禅使我们高效快捷地工作,我不经常使用鼠标(我使用i3wm。)
Thomas John

@njsg非常感谢您解释主要/剪贴板差异。我尝试了ArchWiki中“自定义键绑定”中提到的Perl扩展名,它没有什么不同(在使用它之前,我在.Xresources中注释了“ Disable Perl扩展名”部分)。-是的,我$ xrdb -merge ~/.Xresource先做了-是的,我确实重新启动了urxvt,或打开了新的urxvt终端窗口,其效果与我忘记提到的最重要的一点相同:我没有安装桌面环境:-我m仅使用Windows管理器(i3wm)-我确实使用图形登录管理器
Thomas John

Answers:


16

不幸的是,X窗口系统具有几种不同的复制粘贴机制

与大多数老式X应用程序一样,Rxvt使用主要选择。通常,当您用鼠标选择某物时,它会自动复制到主要选择中,而当您单击鼠标中键进行粘贴时,即会粘贴主要选择。

Ctrl使用现代GUI工具包的应用程序中的+ CCtrl+ V(或其他键绑定),例如Gnome-terminal和Firefox,可从剪贴板复制/粘贴。

有一些工具可以帮助您进行选择。尤其是,如果您只想复制一个选择,无论是使用鼠标还是按Ctrl+进行选择C,都可以运行自动剪切程序.xinitrc从您的桌面环境的启动程序或从桌面环境的启动程序启动),以检测何时将某些内容复制到选项之一,并自动将其复制到另一个。


20

对于粘贴文本,您可以使用urxvt / rxvt-unicode middle button粘贴PRIMARY选择和Alt/Meta+ middle button粘贴CLIPBOARD。

对于复制,只需在终端中标记文本即可将其复制到PRIMARY选择中。但是,需要一些工作才能复制到CLIPBOARD选项。我将来自Archlinux页面的信息与rxvt-unicode-9.19中包含的脚本链接在一起,最终得到了这样的脚本:https : //gist.github.com/xkr47/98224ed6b0860cb55ec0。它允许使用Ctrl+ InsertCtrl+ Shift+ c`将当前选定的文本复制到CLIPBOARD。

希望这可以帮助。

出于记录,我也没有运行桌面环境。使用Sawfish作为窗口管理器。

提示:您可以使用“ xclip”程序在终端中监视剪贴板:

while :; do echo -ne '\033[31;1mCLIPBOARD: ' ; xclip -o -sel c ; echo ; echo -ne '\033[32;1mPRIMARY:   ' ; xclip -o -sel p ; echo ; echo -e '\033[m--------' ; sleep 1 ; done

或使用“ xsel”程序:

while :; do echo -ne '\033[31;1mCLIPBOARD: ' ; xsel -b -o ; echo ; echo -ne '\033[32;1mPRIMARY:   ' ; xclip -p -o ; echo ; echo -e '\033[m--------' ; sleep 1 ; done

侧边主题:有关Emacs中“主要”和“剪贴板”选择如何工作的信息:emacswiki.org/emacs/CopyAndPaste
乔纳斯·柏林

Alt / Meta +中间按钮在Debian中为我工作
2013年

这是正确的答案。
Winny

15

有内置的机制可用于向/从中复制/粘贴PRIMARY(在用户选择某些数据时使用)和CLIPBOARD(在用户选择某些数据并明确要求将其“复制”到剪贴板时使用,例如通过调用)应用程序“编辑”菜单下的“复制”。有关X中不同剪贴板的更多信息

对于CLIPBOARD缓冲区,它CTRL+META+CCTRL+ALT+C用于标准PC键盘)用于复制,而CTRL+META+VCTRL+ALT+V)用于粘贴。

urxvt男人的报价:

选择:选择和粘贴文本

文本选择和插入/粘贴机制的行为类似于xterm(1)。

选择

左键单击该区域的开头,拖动到该区域的末端并释放;右键单击以扩展标记的区域;左键双击选择一个单词;左键单击三次以选择整个逻辑行(可以跨越多个屏幕行),除非已通过资源三击字进行了修改。

在按Meta键(或Meta + Ctrl键)(编译:褶边)的同时开始选择将创建一个矩形选择,而不是普通选择。在这种模式下,每个选定的行在选择中成为其自己的行,并且尾随的空白在视觉上带有下划线并从选择中删除。

贴上

在urxvt窗口中按下并释放鼠标中键会导致插入PRIMARY选择项的值(或带有Meta修饰符的CLIPBOARD),就像在键盘上键入的一样。

按下Shift-Insert也会插入PRIMARY选择的值。

rxvt-unicode还提供绑定Ctrl-Meta-c并与CLIPBOARD选择进行交互。第一个绑定导致将内部选择的值复制到CLIPBOARD选择,而第二个绑定导致将CLIPBOARD选择的值插入。


为什么我从来不认为解决方案在手册页中?现在,一切对我来说都是清楚的!谢谢!
恩里科·玛丽亚·德·安吉利斯

1
顺便说一句,当我右键单击和粘贴之前选择某项时,我一直忘了将主要选择和剪贴板之间的哪个粘贴到了其中。现在很明显了:beforePRIMARY
恩里科·玛丽亚·德·安吉利斯

12

您可以使用“选择剪贴板” perl扩展将urxvt复制到“主要”和“剪贴板”。这样可以使它们保持同步,因此您只需在urxvt中复制一次,它就可以在使用两者之一的应用程序中工作。

URxvt.perl-ext-common: selection-to-clipboard

2
我可以更改此扩展程序的快捷方式吗?我不喜欢默认的ctrl-alt-c / v。我想要ctrl-shift-c / v。
Trismegistos

3
@Trismegistos,在这里
编码器
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.