#autohotkey
#autohotkey
Вопрос:
Я хочу создать программу в autohotkey, чтобы при вводе ~pdo она заменяла ее длинной строкой кода. Как мне это сделать, чтобы символы внутри не форматировались как синтаксис autohotkey?
Я попробовал следующий код:
~pdo:Send,
$pdo = new PDO('mysql:dbname=chat;host=localhost', 'root', 'simon sleeping123!@#');
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
date_default_timezone_set('America/New_York');
В ответ я получаю сообщение об ошибке:
Текст строки: $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); Ошибка: недопустимая горячая клавиша.
Ответ №1:
Я бы рекомендовал использовать буфер обмена и CTRL V для такого длинного ввода. Если не вставлять текст, вам нужно будет отправить его в текстовом режиме, чтобы избежать перевода определенных символов на определенные кнопки. Например #
, для ключа Windows.
Кроме того, вам нужно будет добавить разрывы строк. Подробнее об этом ниже.
Во-первых, используйте горячую строку для запуска при ~pdo
вводе. Используйте те варианты, которые вы считаете подходящими. Я бы предположил, что вас устроит только вариант *.
А чтобы отправлять многострочные материалы, вы можете либо явно указать разрывы строк с помощью символа перевода строки `n
(docs).:
$pdo = new PDO('mysql:dbname=chat;host=localhost', 'root', 'simon sleeping123!@#');`n`n$pdo->setAttribute(PDO::ATTR_EM...
Или вы можете более удобно использовать раздел продолжения:
:*:~pdo::
Clipboard := "
(LTrim
$pdo = new PDO('mysql:dbname=chat;host=localhost', 'root', 'simon sleeping123!@#');
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
date_default_timezone_set('America/New_York');
)"
SendInput, ^v
return
И вот ваш готовый скрипт. ^v
означает CTRL V и используется опция LTrim
(docs), можем ли мы по-прежнему правильно форматировать код, не добавляя лишних пробелов к фактическому тексту в разделе продолжения.
Комментарии:
1. Большое спасибо за вашу помощь. Удаление всех разрывов строк и замена их на
n
n избавили от сообщений об ошибках. Тогда слепая отправка также помогла избавиться от нежелательных символов.
Ответ №2:
Вы ищете горячую строку, а не горячую клавишу. Горячая клавиша срабатывает, когда клавиши удерживаются вместе, тогда как горячая строка срабатывает, когда клавиши вводятся последовательно.
Кроме того, поскольку это многострочная горячая строка, взгляните на это, чтобы оно работало.
Исходя из этого, вот мой код (срабатывает при вводе «~ pdo»):
:*:~pdo::
MyMultilineHotstring =
(
$pdo = new PDO('mysql:dbname=chat;host=localhost', 'root', 'simon sleeping123!@#');
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
date_default_timezone_set('America/New_York');
)
SendInput, %MyMultilineHotstring%
Комментарии:
1. Команда отправки должна быть в текстовом режиме.
2. При запуске вашего кода в sublime text он делал что-то странное. Он создал новый файл с половиной данных в одном файле, а другая половина — в другом файле. Знаете ли вы какую-либо причину для этого?