2012-11-25 1 views
2

마지막으로 선택할 수있는 방법이 있습니까 N 자동 입력 키가있는 N 기호가 있습니까?자동 핫키로 캐럿을 넣기 전에 마지막 N 문자 선택

나는 숭고한 텍스트의 중복 기능 (Ctrl 키 + 시프트 + D)을 복제하는 기능을 만들고있어. 나는 같은 것을 만들 수 있습니다, 그것은 기술적으로 SendInput ^C{right}^V

를 통해 중복되기 전에 텍스트를 선택하려면 :

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

을하지만 그 빈약 한 성능을 보여 주었다.

또 다른 방법은 시프트 + 입니다. 예를 들어 Send +{Home}을 선택한 다음 선택한 심볼의 수를 계산 한 다음 Send {Left}Send +{Home}을 다시 한 번 반복하여 반복 된 문자열의 길이에이를 때까지 반복합니다.

더 좋은 대안이 보이지 않습니다.

캐럿 이전에 N 기호를 선택하는 좋은 방법이 있습니까?

답변

3

내가 ST2에 대해 읽은 것에서 (저를 알아 줘서 고맙습니다) ^^ 선택된 텍스트를 복사하거나 아무것도 선택하지 않으면 전체 줄을 복사하는 것입니다.

이 방법이 유용할까요? 나는 MS 메모장에서이 테스트를

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 

는, 다른 편집기 (특히 주변 선택한 텍스트의 끝으로 점프) 다르게 작동 할 수 있습니다. 이제 스크립트가 선택한 텍스트를 복사하여 붙여 넣고 새로 붙여 넣은 텍스트를 강조 표시합니다.

+0

팁 주셔서 감사합니다! 그러나 실제로, ST2'Ctrl + Shift + D'는 복사하는 것이 아니라 선택된 텍스트를 복제합니다. 즉, 처음에 복사 한 다음 붙여 넣은 다음 붙여 넣은 텍스트가 선택되었음을 의미합니다. 따라서 첫 번째와 두 번째 작업은 쉽게 관리 할 수 ​​있지만 붙여 넣은 텍스트를 선택하는 것은 쉽지 않습니다 ... 그것은 주된 문제입니다. –

+0

드미트리이게 당신이 찾고 있던가요? –

+0

예, 고마워요. 하지만 실제로는 루프를 사용하는 방식과 거의 동일한 방식으로 선택을합니다. 큰 텍스트가 중복되면 너무 느립니다 (300 자 이상). 그래서'Send + {Right % N %}'이외에 삽입 된 텍스트를 선택하는 다른 방법이 있는지 궁금합니다. –