2

有没有办法用自动热键选择最后N个符号?

我正在制作一个复制 Sublime Text 的重复函数(Ctrl+ Shift+ D)的函数。我希望在通过复制文本之前选择文本SendInput ^C{right}^V

从技术上讲,我可以做类似的事情:

selectBefore(n){
    Loop, %n% {
        SendInput +{Left}
    }
}

但这表明表现不佳。

另一种方法是玩Shift+ Home。例如,Send +{Home},然后计算所选符号的数量,然后Send {Left}重复Send +{Home},依此类推,直到达到重复字符串的长度。

我没有看到任何更好的选择。

在插入符号之前选择N个符号是否有一种好的基本方法?

4

1 回答 1

3

从我读到的关于 ST2 的内容(感谢您让我知道)是 ^+d 复制选定的文本,或者如果没有选择任何内容,则复制整行。

这行得通吗?

TempCB = %ClipBoard% ; Park clipboard (text) content, Other content (format, images, etc.) will be lost.
ClipBoard = ; Clear clipboard
Send, ^c ; Grab selected text
Sleep, 100 ; Wait 0.1 seconds for clipboard (clipboard will not get filled if nothing is selected)
if (Clipboard = "") ; Nothing selected, thus copy whole line
{
    Send, {Home}+{End}^c ; Select line and copy to clipbard
}
MoveBack := StrLen(ClipBoard)
MoveFwd := MoveBack
MoveBack++ ; Move one step back further back due to earlier step {right}
Send, {Right}{Left}^v{Right}{left %Moveback%}+{Right %MoveFwd%} ; Go to end of selected text (in MS notepad this is will jump over the first next char., thus a jump back as well), add a space and paste.
ClipBoard = %TempCB% ; Restore (text part) of previous clipboard content.
Return

我在 MS 记事本中对此进行了测试,其他编辑器的行为可能有所不同(尤其是在跳到所选文本的末尾时)。该脚本现在复制并粘贴选定的文本并突出显示新粘贴的文本。

于 2012-11-26T09:50:23.253 回答