如何禁用 autohotkey 中的语法字符?

How to disable syntax characters in autohotkey?

我想在 autohotkey 中创建一个程序,以便在键入 ~pdo 时用一长行代码替换它。我该怎么做才能使里面的符号不被格式化为自动热键语法?

我试过以下代码:

~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');

在 return 中,我收到错误消息: 行文本:$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);错误:热键无效。

您正在寻找 Hotstring rather than a Hotkey。当 键同时按下时触发热键 ,而当 键按顺序输入时触发热字串

此外,看到这是一个多行热字串,take a look at this让它工作。

基于此,这是我的代码(在键入“~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%

我建议使用 clipboard and CTRL+V for such a long input. If not pasting the text, you'd need to send that in text mode 以避免将某些字符转换为某些按钮。例如 # 到 Windows 键。
此外,您还需要添加换行符。更多内容见下文。

首先,使用 hotstring to trigger when ~pdo is typed. Use whichever options you see fit. I'd assume you'll be fine with just the * option.

要发送多行内容,您可以使用换行符明确指定换行符 `n(docs):

$pdo = new PDO('mysql:dbname=chat;host=localhost', 'root', 'simon sleeping123!@#');`n`n$pdo->setAttribute(PDO::ATTR_EM...

或者你可以更方便地使用 continuation section:

:*:~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+VLTrim(docs) 选项是否仍然可以正确格式化代码,而无需在后续部分的实际文本中添加额外的空格。