AutoHotKey源代码换行符

时间:2014-11-26 19:16:57

标签: autohotkey

有没有办法在AutoHotKey源代码中进行换行?我的代码超过80个字符,我想整齐地分开它们。我知道我们可以用其他语言来做这件事,比如下面的VBA:

http://www.excelforum.com/excel-programming-vba-macros/564301-how-do-i-break-vba-code-into-two-or-more-lines.html

If Day(Date) > 10 _
And Hour(Time) > 20 Then _
MsgBox "It is after the tenth " & _
"and it is evening"

AutoHotKey中是否存在源代码换行符?我使用旧版本的AutoHotKey,版本1.0.47.06

2 个答案:

答案 0 :(得分:5)

文档中有Splitting a Long Line into a Series of Shorter Ones部分:

  

长线可以分为较小的一组   提高可读性和可维护性。这并没有减少   脚本的执行速度,因为这些行在内存中合并了   脚本启动的那一刻。

     

方法#1 :以"和","或",||,&&,逗号或a开头的行   句点自动与其正上方的行合并(in   v1.0.46 +,除了以外的所有其他表达式运算符都是如此   ++和 - )。在下面的示例中,第二行附加到第一行,因为它以逗号开头:

FileAppend, This is the text to append.`n   ; A comment is allowed here.
    , %A_ProgramFiles%\SomeApplication\LogFile.txt  ; Comment.
  

同样,以下行将合并为一行   因为最后两个以"和"开头或"或":

if (Color = "Red" or Color = "Green"  or Color = "Blue"   ; Comment.
    or Color = "Black" or Color = "Gray" or Color = "White")   ; Comment.
    and ProductIsAvailableInColor(Product, Color)   ; Comment. 
  

三元运算符也是一个很好的候选者:

ProductIsAvailable := (Color = "Red")
    ? false  ; We don't have any red products, so don't bother calling the function.
    : ProductIsAvailableInColor(Product, Color)
  

虽然上面示例中使用的缩进是可选的,但它可能会有所改进   通过指明哪些线属于它们之上的线来清晰。它,它   没有必要为以#开头的行包含额外的空格   单词" AND"和"或&#34 ;;程序会自动执行此操作。最后,   可以在任何一个之间或之间添加空白行或注释   上面例子中的行。

     

方法#2 :此方法应用于合并大量行   或者当这些行不适合方法#1时。虽然这种方法   对于自动更换热字串特别有用,它也可以使用   任何命令或表达。例如:

; EXAMPLE #1:
Var = 
(
Line 1 of the text.
Line 2 of the text. By default, a line feed (`n) is present between lines. 
)

; EXAMPLE #2: 
FileAppend,  ; The comma is required in this case. 
(
A line of text. 
By default, the hard carriage return (Enter) between the previous line and this one will be written to the file as a linefeed (`n).
     By default, the tab to the left of this line will also be written to the file (the same is true for spaces).
By default, variable references such as %Var% are resolved to the variable's contents. 
), C:\My File.txt
  

在上面的例子中,有一系列的界限   顶部和底部由一对括号组成。这被称为a   继续部分。请注意底线包含   FileAppend在右括号后的最后一个参数。这个   练习是可选的;它是在这样的情况下完成的,所以逗号   将被视为参数分隔符而不是文字逗号。

请阅读文档链接以获取更多详细信息。

因此,您的示例可以重写如下:

If Day(Date) > 10 
And Hour(Time) > 20 Then
    MsgBox
    (
    It is after the tenth 
    and it is evening
    )

答案 1 :(得分:2)

我不知道这样做的一般方法,但似乎你可以打破一条线并用操作符开始虚线的其余部分(例如下一个实线)。只要第二行(以及第三,第四等,如果适用)以(可选的空格加)运算符开头,AHK就会将整个事物视为一行。

例如:

hello := "Hello, "
       . "world!"
MsgBox %hello%

在第二行的逻辑开头存在连接运算符.,这使得AHK将这两行视为一。

(我也尝试离开操作员和第一行的结尾,用双引号字符串开始第二行;这不起作用。)