Autohotkey - Hotstring не работает после триггера табуляции - PullRequest
0 голосов
/ 11 октября 2019

Я написал сценарий Autohotkey для автоматического завершения оператора печати в java

System.out.println("");

, нажав s , а затем Tab и перейдя к следующей строкекогда курсор находится между кавычками, нажав Shift + Введите следующим образом

:*:s`t::System.out.println("");{left}{left}{left}

+Enter::
ClipSaved := ClipboardAll  
Loop
{
    clipboard =           
    Send, +{Right} 
    Send, ^c              
    ClipWait , 0.2             
    StringRight := InStr(Clipboard,OutputVar, 1)
    If OutputVar = {;}
    Send ^v
    Send {Right}
    Send {Right}
    Send {Right}
    Send {Enter}
    break            
}
clipboard := ClipSaved    
Return

Проблема здесь в том, что он работает хорошо, когда я набираю s а затем Tab и при нажатии Shift + Enter переходит на новую строку. Но если я набираю что-нибудь между кавычками, а затем нажимаю Shift + Enter , он переходит на новую строку, но затем автозаполнение не работает, т.е. я не получаю оператор печати, когданабрав s , а затем Tab . Изображение ошибки прилагается для иллюстрации. Вы можете скопировать / вставить код и сообщить мне, где ошибка, поскольку я не могу ее выяснить.

error_image

1 Ответ

2 голосов
/ 11 октября 2019

Если вы хотите вызвать горячую строку после того, как что-то набрали, вам нужно использовать опцию вопросительного знака. Попробуйте это:

:*?:s`t::System.out.println("");{left}{left}{left}
...