是否有用于粘贴主要选择的标准或常规键盘快捷键?
我想选择一些文本并转到另一个应用程序进行粘贴,而不会破坏我的剪贴板内容。我宁愿将手指放在键盘上,也不愿移动到鼠标上,找到指针,将其放在我想要的位置,然后单击鼠标中键。
如果没有什么传统的,或者它是特定于应用程序的并且不受许多人支持,是否有一种解决方法可以让它在全球范围内工作?(或者至少在更多应用中。)
是否有用于粘贴主要选择的标准或常规键盘快捷键?
我想选择一些文本并转到另一个应用程序进行粘贴,而不会破坏我的剪贴板内容。我宁愿将手指放在键盘上,也不愿移动到鼠标上,找到指针,将其放在我想要的位置,然后单击鼠标中键。
如果没有什么传统的,或者它是特定于应用程序的并且不受许多人支持,是否有一种解决方法可以让它在全球范围内工作?(或者至少在更多应用中。)
发送虚拟按键对我不起作用(请参阅评论),但这个答案启发了我寻找类似的解决方案。发送“文本”事件
xvkbd
会忽略物理键盘的当前状态:xvkbd -text
使用一些反斜杠序列,因此与其与转义共舞,不如说是-file
有效。添加-delay 0
以在“击键”之间无延迟地输入文本。xvkbd
还输出一些关于修饰符的警告文本,但它似乎与此用途无关(但我不想在 中看到它~/.xsession-errors
)。我使用System > Preferences > Keyboard Shortcuts将此绑定到快捷方式。
请注意,您需要安装 xsel 和 xvkbd 软件包:
我一直在为同样的问题寻找答案,我发现这个答案说Shift+Insert正在粘贴主要选择。我为我工作。更简单。
您可以通过结合使用程序 xdotool (单击安装)和 xsel (单击安装)来获得此功能。
xdotool
可以模拟输入窗口;xsel
输出 PRIMARY 选择的内容(默认);以下外壳一班轮将做的伎俩:要使用System->Preferences->Keyboard shortcuts菜单项将此绑定到任何键,必须将其包装在 shell 调用中:
xdotool
某些程序无法输入;请参阅xdotool 文档中的注释。调用
xdotool click --clearmodifiers 2
模拟单击鼠标中键。这比使用 xsel 好得多(至少对我来说)。尽管您必须在键入之前定位鼠标...另一个 xdotool 建议,在 Debian Jessie 8.7(2017 年 1 月)中工作:
xdotool click
模拟实际点击,因此您不必像使用xdotool type
, 或 xvkbd 那样单击自己来粘贴到鼠标位置。唯一的问题是,它
--clearmodifiers
会“按下”您在模拟点击后使用的任何修饰符(Ctrl/Alt/Shift/Meta)。即使使用--delay 0
(而不是 12 毫秒),该命令也需要一点时间来执行。如果您在结束之前释放按键,您的修饰符将再次“按下”,并卡在那里直到您再次按下并释放实际按键。所以有了这个,你必须有点“慢”(50ms?)来释放你的修饰符,如果你正在使用任何修饰符。
您可以通过设置您的键盘快捷键,在文本编辑器中使用它,然后按一个键(如
a
或箭头)来测试这一点。该字母应以小写形式出现。如果发生其他事情,您的速度太快并且修改器被卡住(如果它是大写的,则为 Shift,如果您选择了所有文本,则为 Ctrl,如果您打开了菜单,则为 Alt)。再次按下并释放修改器以重置它们。如果速度太快,可以使用 ilkerk 的建议:
然后你必须在不到300 毫秒的时间内释放它们,并等待半秒钟让文本出现。
此外,使用
xdotool type
意味着您插入文本,就像您在文本光标位置而不是鼠标指针处键入一样。click
如果您更喜欢通常的中键单击行为,可以将其更改为。(做这个帖子是为了让新人不必再拼凑评论中散布的拼图)
我对模拟粘贴
PRIMARY
选择的解决方案有问题,所以我添加了一个快捷方式,将选择复制到PRIMARY
CLIPBOARD
. 使用我的快捷方式后,我CLIPBOARD
以通常的方式粘贴Ctrl+V
,Ctrl+Shift+V
, 或Shift+Insert
,具体取决于应用程序。PRIMARY
将选择复制到的命令CLIPBOARD
是Ctrl+Insert
我在 Gnome 快捷方式设置中绑定到(任意选择)System Settings -> Devices -> Keyboard
其他解决方案的问题总结:我尝试了
xsel | xvkbd ...
和xsel | xdotool ...
解决方案,但发现它们的效果不是很好,因为它们模拟逐字符键入选择的内容,这与单击鼠标中键粘贴不一样。问题包括:一次插入一个字符的大选择时延迟很长;如果要撤消“粘贴”,则必须逐字符撤消它,这很慢;如果您使用“死键”,那么一切都会搞砸,例如“粘贴”会产生;不能正确处理 unicode 字符。PRIMARY
"e
ë
xvkdb
警告:此解决方案会覆盖现有
CLIPBOARD
内容,但 OP 要求提供保留现有CLIPBOARD
内容的解决方案。我有同样的问题,互联网搜索对我没有多大帮助。正如 OP 所提到的,模拟 click 2 的问题很烦人。
上述建议
xdotool
和 xsel 的问题是,当xdotool
开始“键入”时,您仍在按另一个键。这并不总是导致任何输出。例如,如果您将它绑定到“插入”键,则xdotool
在您的手指按下“插入”键时发送键,这不会导致任何结果。以下是一种解决方法,将其绑定到按键:
它并不完美,但可以工作。现在你有 0.3 秒的时间来完成你的按键选择(和按键)。
你也可以使用
xclip
使用以下命令复制
primary
to的内容:clipboard
您可以将此命令绑定到您喜欢的任何键盘快捷键。如果您使用的是 Gnome 桌面环境,您可以通过转到
Settings > Keyboard Shortcuts
或搜索keyboard shortcuts
其他 DE 来完成。Ctrl-v
现在,您可以通过或以通常的方式粘贴内容Ctrl-Shift-v
。但是,这将覆盖剪贴板以前的内容!
在 Debian Bullseye 上的 KDE 中,默认组合键似乎是Ctrl++ 。ShiftInsert