除非我使用代码点,否则 AutoHotKey 无法在 WSL 上插入数字
我想python3
每次使用pipenv
. 为此,我需要插入:pip --python /usr/bin/python3 etc.
。但是,我不想--python /usr/bin/python3
每次都输入,因此我使用 AutoHotKey 脚本自动化了该部分。
当我在记事本文件或路径栏等任何地方键入热字串时,以下行工作正常:
::pipenv::pipenv --python /usr/bin/python3
当我输入pipenv
记事本时,pipenv --python /usr/bin/python3
就会插入字符串。
但是,如果我在 WSL(Linux 的 Windows 子系统)上键入它,我会得到:
pipenv 66python LusrLbinLpython·
我在 CMD 中得到了相同的结果,但在 PowerShell 中却没有(我得到预期的输出)。
为了使它在命令行上工作,我不得不使用十六进制代码点(或实体引用,不确定正确的名称)而不是字符本身来重写我的脚本:
::pipenv::pipenv {U+2D}{U+2D}python {U+2F}usr{U+2F}bin{U+2F}python{U+33}
这样,输出pipenv --python /usr/bin/python3
在命令行和任何其他环境中都是预期的。我很惊讶会出现这种情况,因为这些字符(-
和/
)3
是普通的 ASCII 字符,所以我不明白为什么需要使用代码点。
AutoHotKey 脚本包含带有 CRLF 行终止符的 UTF-8 Unicode(带 BOM)文本。
简而言之,我设法使脚本工作。打开这个问题的原因是为了了解为什么会发生这种情况。谢谢。