我正在尝试创建一个脚本,该脚本处理来自 gui 的选定文本(任意数量的应用程序,如浏览器、文本编辑器等),然后使用一个键盘命令自动将选定的文本替换为处理后的文本。
我可以让 xsel 替换剪贴板或主缓冲区,但如果可能的话,我不想用另一个键盘快捷键粘贴。
工作流程:
- 选择文本
- 击键命令
- Bash 脚本处理文本
- Bash 脚本将文本粘贴到 gui 编辑器中,替换选择(<-- 这是我想不通的)
- 鳍
我读过 xsel 允许粘贴,但据我所知,它只允许将文本输出到 cli(不是真正的粘贴)或重定向到其他内容。这可能是我需要的,但我不明白该怎么做(即,我将输出重定向到什么以使其自动替换 gui 中的选定文本?)
谢谢!
更多信息:
- 我正在使用 Xubuntu 19.10
- 我只想用简单的文本替换(例如将小写更改为大写)
- 让我们保持简单 - 我如何(使用键命令)从 bash 脚本中获取文本并将其粘贴到光标当前所在的 gui 文本编辑器/区域中,如果有的话,替换选定的文本?
虽然
bash
并且xdotool
肯定会处理这样一个简单的案例,但这正是AutoKey旨在做的事情。在 AutoKey 中,您可以使用AutoKey API定义一个用 Python 编写的简单脚本来执行此操作。这可以分配给一个热键,并在按下该热键时运行。它看起来像这样(未经测试。)
它将所选文本转换为变量,将其转换为小写,将其放回剪贴板,然后将其粘贴回最初来自的当前选择中。(如果您的应用程序窗口是终端,那么您必须使用Ctrl++ 。Shift)v
这样做有几个优点: 可以说它比修改键盘更容易。您可以在 AutoKey GUI 中轻松更改热键。您可以定义窗口过滤器,以便热键仅在您选择的窗口中有效。您可以随意打开和关闭此功能。而且,由于您可以使用 Python 的全部功能,因此您几乎可以做任何您能想到的事情。
如果您只是想用一个短语替换另一个短语,那么 AutoKey 短语可以在不编写任何代码的情况下完成此操作,但由于您需要操作文本,因此需要一个脚本。
注意:Debian 和衍生发行版(Ubuntu ...)目前提供了非常旧的 AutoKey 版本。这已在 Debian 测试中修复,并将在 Ubuntu 20.04 中修复。现在,您可以使用这些说明轻松安装该软件包。
如需帮助,请访问我们的支持论坛。
由于您几乎普遍使用 Xorg 和ctrl+ vist 作为粘贴的快捷方式,因此最简单的解决方案是
xdotool
(可从官方存储库获得):该
--clearmodifiers
标志尝试在发出按键之前清除所有修饰符( ctrl, ...)并在之后恢复它们。alt这在您通过键盘快捷键调用脚本时很有用,因为否则应用程序还将看到您为快捷键按下的修饰符,例如ctrl++alt可能v会导致不同的命令。有时,当您在恢复修改器之前释放修改器时,这可能会导致竞态条件
xdotool
,使它们卡住。在这种情况下,只需按下并释放卡住的修饰符即可将其解开。xdotool
可以做更多。阅读man xdotool
以获得概述。它还经常与 结合使用xbindkeys
,它使您可以比 gnome 更通用地配置键盘快捷键,还使您能够将操作绑定到鼠标按钮。我同意乔的观点,即 AutoKey 非常适合您想做的事情。我想我会包含另一个示例脚本。这个使用字符串格式也将选定的文本更改为小写(你可以让它做任何你喜欢的事情,而不是改变大小写):