Autohotkey 使用自动热键选择插入符号前的最后N个字符

Autohotkey 使用自动热键选择插入符号前的最后N个字符,autohotkey,caret,Autohotkey,Caret,有没有办法用自动热键选择最后N个符号 我正在制作一个复制Sublime文本的复制函数(Ctrl+Shift+D)的函数。我希望在通过SendInput^C{right}^V 从技术上讲,我可以制作如下内容: selectBefore(n){ Loop, %n% { SendInput +{Left} } } 但这显示了糟糕的表现 另一种方法是使用Shift+Home。例如,Send+{Home},然后计算所选符号的数量,然后再次Send{Left}和Send+{

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

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

从技术上讲,我可以制作如下内容:

selectBefore(n){
    Loop, %n% {
        SendInput +{Left}
    }
}
但这显示了糟糕的表现

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

我没有看到更好的选择


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

从我读到的关于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中对此进行了测试,其他编辑器的行为可能会有所不同(尤其是在跳转到选定文本的末尾时)。
脚本现在复制并粘贴所选文本,并突出显示新粘贴的文本。

谢谢提示!但实际上,ST2不仅复制选定的文本,而且复制选定的文本。这意味着首先复制它,然后粘贴它,然后选择粘贴的文本。所以,第一个和第二个任务很容易管理,但是选择粘贴的文本并不像看起来那么容易…这是主要的问题。Dmitry,这就是你要找的吗?是的,谢谢。但实际上,它的选择方式与我的
循环方法几乎相同:复制大文本(300个字符或更多)时速度太慢。所以我想知道除了
Send+{Right%N%}