AutoHotkey v2

AutoHotkey2

Total questions: 1
Total messages: 4
Total users: 3
Telegram: @AutoHotkey2

Most active

📗 Total 1 questions in AutoHotkey v2 chat

Кстати в мануале к АНК2 такой штуки нету Вспомогательный скрипт для написания строк автозамены Приведенный ниже скрипт был предложен Андреасом Баруттой (Andreas Borutta) и может быть полезен, если вы часто используете строки автозамены. Нажатием комбинации клавиш Win+H (или другой горячей клавиши по вашему выбору) выделенный текст можно превратить в строку автозамены. Например, если в вашем редакторе выделена строка "by the way", то нажатие Win+H подскажет вам аббревиатуру (напр. btw) и затем добавит в скрипт новую строку автозамены, после чего перезагрузит скрипт для того, чтобы активировать строку автозамены. #h:: ; горячая клавиша Win+H ; Получаем текущий выделенный текст. Вместо "ControlGet Selected" используется ; буфер обмена, так как он есть в большинстве редакторов ; (т.е. текстовых процессоров). Сохраняем текущее содержимое буфера обмена, ; чтобы восстановить его позднее. Хотя обрабатывается только простой текст, ; это все же лучше, чем ничего: AutoTrim Off ; Сохраняет любой межстрочный интервал и пробел в конце текстовой строки в буфере обмена. ClipboardOld = %ClipboardAll% Clipboard = ; Чтобы обнаружение заработало, нужно начать с пустого значения. Send ^c ClipWait 1 if ErrorLevel ; Время ожидания ClipWait вышло. return ; Заменяем CRLF и/или LF на `n, чтобы использовать в строке автозамены опцию "send-raw" (R): ; Тоже самое делаем с любыми другими символами, иначе ; могут возникнуть проблемы в "сыром" режиме: ; Делаем эту замену вначале, чтобы избежать помех со стороны тех, которые идут далее. StringReplace, Hotstring, Clipboard, ``, ````, All StringReplace, Hotstring, Hotstring, `r`n, ``r, All ; В MS Word...`r работает лучше, чем `n. StringReplace, Hotstring, Hotstring, `n, ``r, All StringReplace, Hotstring, Hotstring, %A_Tab%, ``t, All StringReplace, Hotstring, Hotstring, `;, ```;, All Clipboard = %ClipboardOld% ; Восстанавливаем предыдущее содержимое буфера обмена. ; Каретка поля ввода (InputBox) устанавливается в более удобную позицию: SetTimer, MoveCaret, 10 ; Показываем поле ввода (InputBox), обеспечивая строку автозамены по умолчанию: Text1 := "Напечатайте вашу аббревиатуру в указанном месте. " Text2 := "При желании вы можете отредактировать текст замены." Text3 := "`nПример:`n:R:btw`::by the way" InputBox, Hotstring, Новая автозамена, %Text1%%Text2%%Text3%,,,,,,,, :R:`::%Hotstring% if ErrorLevel <> 0 ; Пользователь нажал Cancel. return IfInString, Hotstring, :R`::: { MsgBox Вы не напечатали аббревиатуру. Строка автозамены не добавлена. return } ; Иначе, добавляем строку автозамены и перезагружаем скрипт. ; Помещаем `n в начало, в случае, если в конце файла нет пустой строки. FileAppend, `n%Hotstring%, %A_ScriptFullPath% Reload ; В случае успешного завершения перезагрузка закроет этот экземпляр скрипта в режиме ожидания, ; поэтому строка ниже никогда не будет исполнена. Sleep 200 Text1 := "Только что добавленная строка неверно отформатирована. " Text2 := "Открыть файл для форматирования? " Text3 := "Обратите внимание, что неисправные строки автозамены находятся внизу скрипта." MsgBox, 4,, %Text1%%Text2%%Text3% IfMsgBox, Yes, Edit return MoveCaret: IfWinNotActive, Новая автозамена return ; Иначе, передвигаем курсор в поле ввода туда, где пользователь напечатает аббревиатуру. Send {Home}{Right 3} SetTimer, MoveCaret, Off return