Autohotkey 中文论坛

完整版: 一行内容太多的情况下如何写在两行下
你目前正在浏览的是简化版. 请点击这里浏览完整版
程序中如果一行的内容很多写不下,如何换行写在第二行中而不会被程序认为是两行语句?谢谢!

[ 本帖最后由 yigao 于 2009-4-9 10:39 编辑 ]
1. 用变量替换 较长的字符串
2. 开启编辑器的自动换行功能
我可以试试后一个方法,隐约记得以前用记事本开着自动换行的情况下,换到第二行的内容被认作新的语句行了。
引用:过长的行可以被分割成一系列较短的行来改善可读性和可维护性。这样做不会降低脚本的执行速度,因为在脚本启动的时候这些短行会在内存中被合并。

方法 #1:以 "and"、"or"、||、&&、逗号或句号开头的行会自动合并到它的上一行(在 1.0.46 及之后版本,除了 ++ 和 -- 以外的所有其他表达式运算符都会如此)。下例中,由于第二行以一个逗号开头,所以它被追加到第一行:

FileAppend, 这是要追加的文本`n ;这里允许使用注解。
, %A_ProgramFiles%\SomeApplication\LogFile.txt ;注解。类似地,以下几行将被合并为一行,因为最后两行是以 "and" 和 "or" 开头的:

if (Color = "Red" or Color = "Green" or Color = "Blue" ;注解。
or Color = "Black" or Color = "Gray" or Color = "White") ;注解。
and ProductIsAvailableInColor(Product, Color) ;注解。三元运算符也是一个很好的候选:

ProductIsAvailable := (Color = "Red")
? false ;我们没有任何红色的产品,因此不用麻烦调用函数了。
: ProductIsAvailableInColor(Product, Color)尽管用在上面例子中的缩进不是必须的,但它可以指示哪行从属于上一行,这样可以改善代码的清晰度。此外,没有必要将额外的空格包括在以单词 "AND" 和 "OR" 开头的行里;程序会自动处理这些。最后,可以在上面例子中的任何行与行之间或者行尾添加空行或注解。

方法 #2:这个方法可以用来合并大量的行或者是方法 #1 不适用的行。尽管本方法对自动替换热字符串特别有用,但它同样可以用于任何命令或表达式。例如:

;例子 #1:
Var =
(
第一行文本。
第二行文本。默认情况下,将在两行中插入一个换行符(`n)。
)

;例子 #2:
FileAppend, ;这种情况下需要逗号。
(
一行文本。
默认情况下,上一行和本行之间的硬回车(Enter)将作为换行符(`n)写到文件中。
默认情况下,本行左侧的 tab 也将写到文件中(空格也会一样)。
默认情况下,例如 %Var% 这样的变量引用将被解析为变量的内容。
), C:\My File.txt在上面的例子中,数行内容在头尾被一对圆括号围起来。这被称作连续部分。注意,最下面一行的右圆括号后包含了 FileAppend 的最后一个参数。这个习惯是可选的;此时这样做是以便将逗号视为一个参数分隔符而非一个原义的逗号。

通过在左括号的右侧包含一个或多个下列选项,可以覆盖连续部分的默认特性。如果存在多个选项,用它们彼此用一个空格分隔开。比如:( LTrim Join| %

Join: 指定行与行应该如何连接。如果省略此选项,除最后一行外,每一行后面都会跟一个换行符(`n)。如果单独指定单词 Join,行与行之间不添加任何字符而直接连接起来。否则,单词 Join 后面应该最多紧跟 15 个字符。例如,Join`s 将会在除最后一行外的每行末尾添加一个空格(`s 代表一个原义的空格,这是一个只能被 Join 识别的特殊的转义顺序)。再比如 Join`r`n,将在行与行之间插入 CR+LF (回车+换行)。类似地,Join| 将在行与行之间插入一个竖线。要让连续部分的最后一行也以一个 join 字符串结尾,只要在连续部分右括号的上一行包含一个空行即可。

LTrim: 省略每行头部的空格和 tab。主要被用来允许连续部分使用缩进。另外,通过在一行上单独指定 #LTrim 可以对多个连续部分开启此选项。#LTrim 是位置相关的:它会影响它下面所有的连续部分。可以通过 #LTrim Off 来关闭此选项。

RTrim0 (RTrim 后跟一个零): 将忽略每行末尾的空格和 tab 的设置关闭。

Comments (或 Comment 或 Com 或 C) [1.0.45.03 及之后版本]: 在连续部分内允许分号注解(但 /*..*/ 无效)。这种注解(连同它们左侧的任何空格和 tab)将从合并结果内完全忽略,而不会被当作原义的文本处理。每个注解都可以出现在一行的右侧或者单独另起一行。

% (百分号):把百分号作为原义处理而非变量引用。这样就无需为每个百分号转义而使其成为原义。在百分号已经是原义的地方就不需要此选项了,比如自动替换热字符串。

, (逗号):将逗号作为分隔符处理,而非其原义。这个罕用的选项只有在命令的参数之间才用得到,因为在函数调用中,逗号的类型不重要。并且,此选项只转换那些真正分隔参数的​逗号。换句话说,一旦到达命令的最后一个参数(或者根本就没有参数),随后的逗号就将作为原义逗号来对待从而忽略此选项。

` (重音符): 把每个反引号都作为原义来对待,而不是转义字符。这也防止了逗号和百分号被明确单独地转义。此外,它会防止任何明显被指定的转义顺序比如:`r 和 `t 的转换。

备注

除了重音符(`)选项被指定的时候外,在连续部分中是支持转义顺序的比如 `n(换行)和 `t (tab)。

当未指定 comment 选项时,在连续部分内部是不支持分号和 /*..*/ 注解的,因为它们被视为原义的文本。不过,在连续部分的顶部和底部行中可以包含注解,例如:

FileAppend, ;注解。
;注解。
( LTrim Join ;注解。
; 这不是一个注解;它是原义的。在上一行添加单词 Comments 就可以使这行成为注解。
), C:\File.txt ;注解。由于上面的原因,在连续部分中分号不再需要被转义。

连续部分无法创建总长度超过 16,383 个字符的行(如果尝试创建,程序会在脚本启动时警告你)。解决方案是把一系列内容串联到一个变量中。例如:

Var =
(
...
)
Var = %Var%`n ;通过另一个连续部分向变量添加更多文本。
(
...
)
FileAppend, %Var%, C:\My File.txt因为一个右括号标志着一个连续部分的结束,要让某一行以原义的右括号开头,可以在它前面用重音符/反引号开头:`)。

一个连续部分后面可以紧跟某个包含了另一个连续部分左括号的行。这就使得上面提及的那些选项在创建单行内容的过程中可以多样化。

不支持通过 #Include 的方式将一个个连续部分组合起来。

摘自中文帮助 脚本->把一个过长的行分割成一系列短行
正解!谢谢!
参考网址