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 に答える