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

How to wrap currently selected text in ``

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

e.g double click "text", it becomes selected, then by pressing key for single `` it is converted to text

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

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

你的方法已经很不错了。试试这个:

$`::
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' 剪贴板。此外,您不需要任何按键等待。 ahk 自行管理来自热键触发器的并发修饰符。我还建议使用 sendraw,它 不会 # 视为 win 按钮,+ 作为Shift 等等。

script inserts new lines between each line if multiple lines are selected

奇怪。当使用 msgBox, %currently_selected% 而不是任何 send 命令时,换行符会正确显示...显然存在一些奇怪的格式,我通过简单地删除所有 Carriage Returns (CR ) (`r) 来自根本不改变所选文本的字符串。

给定的解决方案适用于我的德语键盘。 对于其他键盘布局,这可能有所不同。对我来说,sendraw ``%A_Space% 中的 %A_Space%(至少在第二个中)是必需的,因为如果您声明 sendraw ``(最后是文字 space 字符),AHK 将忽略它。您也可以将所有三个 send 放在一行中,例如

sendraw `` %currently_selected%``%A_Space%

另一种解决方案可能是

sendInput ````{BS}%currently_selected%````{BS}

或者只是简单地

sendRaw `%currently_selected%`

最后:如果您想使一切变得更简单,请使用 #EscapeChar 命令并将分隔符从 ` 更改为 \ 或其他。相似。