如何在``中包装当前选中的文本

时间:2015-05-14 16:47:08

标签: autohotkey

如何编写热键(可在任何编辑器中使用)以将当前选定的文本包装在“

  

例如双击“文本”,它会被选中,然后按下单键“它”   转换为text

这是伪代码和实际代码的混合。 <>中的文字是我不确定的

^<COMMAND FOR PRESSING ` KEY>::
KeyWait Control
<STORE CURRENTLY SELECTED TEXT IN MEMORY>
SendInput `<STORED SELECTED TEXT>'
return

1 个答案:

答案 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%` 或者......类似。