我需要自动快捷键(AHK),将方括号内的文本插入文本文件。但是,根据在Notepad3中打开或在Emacs中打开的文本文件上的代码,我的AHK代码导致错误的文本输入。相对于AHK语法,我对方括号的使用显然是错误的。
我的最低工作示例:
::ttt::
; define variables
myString = abcdf
myFile = C:\Users\myUser\notes\myFile.tex
; write variables into current file
SendInput, <<%myString%>> {enter}
SendInput, [[%myFile%]]
return
我需要的结果应如下所示:
<< abcde>>
[[C:\Users\myUser\notes\myFile.tex]]
Emacs 在以Emacs打开的文本文件上使用此脚本时,结果如下:
<< abcde>>
[[C:\Users\myUser\notes\myFile.tex]]]
第一行按照我的需要编写,而第二行在末尾添加了一个额外的“]”。
Notepad3 在使用Notepad3打开的文本文件上使用此脚本时,结果如下:
<< abcde>>
[[C:\Users\myUser\notes\myFile.tex]]< /abcde>
第一行以我需要的方式编写,而第二行最后添加了第一行的变体,尽管添加了“ /”。
如何修改代码,使文本输入在Notpad3和Emacs中都正确显示?
答案 0 :(得分:0)
正如我的评论中所述,您的代码在我的系统上可以正常运行。也可以这样尝试:
::ttt::
; define variables
; https://www.autohotkey.com/docs/Variables.htm#Intro
myString := "abcdf" ; expression method
myFile = C:\Users\myUser\notes\myFile.txt ; legacy method
; write variables into current file
SendInput {Text} ; https://www.autohotkey.com/docs/commands/Send.htm
(LTrim ; Omits spaces and tabs at the beginning of each line (https://www.autohotkey.com/docs/Scripts.htm#continuation)
<<%myString%>>
[[%myFile%]]
)
return
答案 1 :(得分:0)
<< abcde>>
中的空格是否必要?您的变量的定义似乎无法反映出这一点。
尽管如此,问题可能源于以下事实:输入了这些键,而不是直接发送文本。我发现,通常最好将字符串作为文本发送,以避免其他热键可能干扰您的输出。尝试此调整:
SendInput {text}<< %myString%>>
SendInput {enter}
SendInput {text}[[%myFile%]]