Autohotkey:如何正确地将括号内的文本写入文本文件?

时间:2019-07-14 16:19:22

标签: autohotkey

我需要自动快捷键(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中都正确显示?

2 个答案:

答案 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%]]