2013-09-06 2 views
0

Скажем, я программирование в текстовом редакторе и хотите перебрать переменную:Оператор Replicate ++ через скрипт AutoHotKey?

i++ 

Теперь, скажем, по какой-либо причине, этот язык не ++ а:

i = i + 1 

это раздражает, когда вы привыкли к первому синтаксису. Мне нужен скрипт, который при получении ++ переводит это на ряд команд, которые я отправляю (управление сдвигом левой стрелки и т. Д., Это не та часть, с которой у меня возникают проблемы).

Однако я не могу показаться, чтобы получить этот метод для выполнения:

+ & +:: 

Msgbox test 
return 

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

Как я могу вызвать метод, используя клавиши ++ в качестве триггера?

+0

Извините, но вопрос для меня очень неясен. ** (1) ** Оператор '++' существует в AHK (по крайней мере, 'AHK_L', но кто использует основные ...) ** (2) ** Последовательность клавиш, за которыми следуют два двоеточия (например,'! g :: msgbox, text') указывает на * ярлык горячих клавиш *, а не на функцию (или * метод *, как вы ее называете) ** (3) ** Предполагая * (2) *, последовательность клавиш '+ & + 'не имеет особого смысла. Чего вы на самом деле пытаетесь достичь? Вы хотите создать горячую клавишу? Если да, скажите, когда он должен быть запущен и что он должен делать. И что делает оператор приращения все это? – MCL

+0

@ MCL Я разъяснил и понял, что это было очень плохо написано. – enderland

+2

Может быть, вы хотите автоматически заменить 'someVar ++' на 'someVar = someVar + 1'? – MCL

ответ

0

Там действительно отличная библиотека под названием RegEx Powered Dynamic Hotstrings. И заменить someVar++ на someVar = someVar + 1reeks RegEx!

Это одна линия будет делать то, что вы хотите:

hotstrings("(\w+)\+\+", "%$1% = %$1% {+} 1") 

Это будет работать для каждого имени переменной, что это алфавитно-цифровой (плюс подчеркивание): [a-zA-Z0-9_]

Конечно, это не будет работать для каждого языка поскольку он сильно зависит от синтаксиса. Например, некоторые языки используют := для назначения выражений, для других языков требуется точка с запятой, чтобы заполнить инструкцию и т. Д.

0

Hotstrings WILL работают по этому случаю, однако вам может понадобиться "?" Модификатор для того, чтобы захватить даже в «слово» попробовать, как это:

:*?:++:: 
    ClipboardOld := ClipboardAll,Clipboard := "" 
    Send, +^{Left}^c 
    Clipwait 
    Send, ^{Right} = %Clipboard% {+} 1 
    Clipboard := ClipboardOld,ClipboardOld := "" 
return 

Это также сохраняет буфер обмена.

Смежные вопросы