如何编写热键(可在任何编辑器中使用)以将当前选定的文本包装在“
中例如双击“文本”,它会被选中,然后按下单键“它” 转换为
text
这是伪代码和实际代码的混合。 <>
中的文字是我不确定的
^<COMMAND FOR PRESSING ` KEY>::
KeyWait Control
<STORE CURRENTLY SELECTED TEXT IN MEMORY>
SendInput `<STORED SELECTED TEXT>'
return
答案 0 :(得分:1)
你的方法已经相当不错了。试试这个:
$`::
clp_tmp := ClipboardAll
send ^c
currently_selected := Clipboard
stringReplace, currently_selected, currently_selected, `r,, All
Clipboard := clp_tmp
sendraw ``%A_Space%
sendraw %currently_selected%
sendraw ``%A_Space%
return
需要 $
,否则sendraw ``
将重新触发此热键。内置变量clipboard / clipboardAll
包含windows'剪贴板。此外,您不需要任何keywaits。 ahk自己管理来自热键触发器的同意修饰符。我还建议使用sendraw
不将#
视为 win - 按钮,将+
视为 Shift 等等。
如果选择了多行,脚本会在每行之间插入新行
怪异。当使用msgBox, %currently_selected%
而不是任何send
命令时,换行符会正确显示...显然有一些奇怪的格式化,我通过简单地删除所有回车(CR)来修复它({{ 1}})来自字符串,根本不会改变所选文本。
给定的解决方案适用于我的德语键盘。 对于其他键盘布局,这可能会有所不同。对我来说,`r
中的%A_Space%
(至少在第二个)中是必需的,因为如果你陈述{{1} (最后是一个文字空格字符),AHK会忽略它。您也可以将所有三个sendraw ``%A_Space%
放在一行中,如
sendraw ``
另一种解决方案可能是
send
或只是简单地
sendraw `` %currently_selected%``%A_Space%
最后:如果您想让一切变得更轻松,请使用#EscapeChar命令并将分隔符从sendInput ````{BS}%currently_selected%````{BS}
更改为sendRaw `%currently_selected%`
或者......类似。