使用AutoHotkey选择插入符号之前的最后N个字符

时间:2012-11-25 17:11:22

标签: autohotkey caret

有没有办法用autohotkey选择最后的 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 符号是否有一种好的基本方法?

1 个答案:

答案 0 :(得分: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 Notepad中对此进行了测试,其他编辑器可能表现不同(特别是在跳到所选文本的末尾)。 该脚本现在复制并粘贴所选文本并突出显示新粘贴的文本。