UltraEdit 是常用的文本编辑和代码读取文档,但对于我们这些编码小白来说,生成自定义的wordfile文件,还是有一定困难,在此将wordfile中的语法高亮进行介绍。
语法加亮分支位于配置-编辑器显示之下,允许用户配置语法加亮选项:
语法加亮可以识别预定词语,并用不同颜色显示它们。该功能对于程序员来说尤其有用,并且对那些想用不同颜色显示文档中词语的用户也非常有用。
提供二十种语言或可识别的词语集支持。下列词语组的每个词语集都可以配置为不同的颜色:
普通文本(无法识别的词语)
出现在注释行或块注释中的词语
块注释的代用集
字符串
数值(必须以数字(0-9)开头)
最多八组不同的可识别词语
配置对话框允许选择用于不同语言和颜色组的颜色。同时也允许用户指定用于加亮的“词语文件”的位置。
可以任意设置前景/文本颜色和背景的颜色组。默认情况下,背景使用显示普通文本时指定的背景(自动背景颜色被选中)。只有在未选中的情况下才能激活背景颜色。
可以点击文本描述旁边的彩色框更改每种颜色。当点击时,将出现一个允许选择新颜色的对话框。
另外,对每种颜色组(普通文本除外)都有各种粗体、斜体和下划线的字体样式。每个颜色组均可以单独选择。某些设置了下划线的字体可能无法总是正确显示,而对于粗体,非固定宽度字体的间距也可能不正确。
自动更正关键字复选框用来启用或禁用自动更正功能。
注意 - 加亮功能是通过文件扩展名决定的(详情如下)。文件扩展名修改必须在相应语言中的“词语文件”中定义。
用户可以如下配置预定义词语:
UltraEdit读取一个配置文件(默认文件是“WORDFILE.TXT”),来配置语法加亮。每次编辑器启动时读取该文件。该文件的大小不能超过 372KB。该文件语法如下所示:
语言定义
用 /Ln 指定的词语集或语言,这里的 n 是 1 到 20 之间的值。它必须位于行首。语言的描述或名字可以直接在 /Ln 后面的引号中指定。当设置语言颜色时,则显示该描述(如果有)。描述应该不大于 24 个字符。
行注释
用于以字符串“Line Comment = ”及其后的注释字符指定行注释的注释字符。允许五个字符,如果小于五个字符,那么最后一个字符必须后接一个空格。
第二套行注释可以用字符串“Line Comment Alt = ”及其后的注释字符指定。允许五个字符,如果小于五个字符,那么最后一个字符必须后接一个空格。
在某些情况下,可能需要以一个空格作为行注释的一部分,可以用另外一个方法来描述行注释。这种可选的方法是,用户以下列语法指定使用的字符数:
"Line Comment Num = xCC "
这里的 x 用来指定字符数 (1 到 5),直接跟随其后的字符用于行注释,在上面的示例中,x 应该是 3,行注释应该是“CC ”(请注意 CC 后面的空格)。
此外,有时需要将限定词用于行注释,这样注释仅在某列出现时有效,或在某些字符之后有效(当然,更多情况下如果跟随在某些字符之后,它们常常是无效的)。为能够达到此目的,这里提供两个额外的行注释命令:
"Line Comment Preceding Chars = […]"
and
"Line Comment Valid Columns = [1-7,10]"
“行注释前导字符”(Line Comment Preceding Chars)的默认值为所有字符都有效。因此,该项目将包括那些在代字号后面无效的字符,如…[~a-z]中一样。这表明该注释如果紧跟字符范围 a-z 之内则该注释无效。在方括号之间的任何符号都有效。
“行注释有效列”(Line Comment Valid Columns)是当其未定义时所有的列都有效。如果定义了它,则只有指定的行才有效。可以有最多 10 个列范围,或以逗号分隔的指定列,如…[1-7, 10] 中一样。这表明注释符号在列 1 到 7,或在列 10 都有效。
块注释
用于块注释的字符也可以配置(即 /* … */ 表示 ‘C’)。它们的格式为“Block Comment On = ”和“Block Comment Off = ”,每种格式后接最多 19 个定义注释标志符的字符。为与先前版本兼容,将 ‘/*’ 和 ‘*/’ 用于以 ‘.C’ 作为扩展名之一的文件类型。它可以被覆盖。块注释的第一个字符可以为空格。
如果定义了“Block Comment On = ”而未定义“Block Comment Off = ”,则注释将在行尾停止。它有效地实现块注释也能用于行注释。
此外,可以为需要的语言定义另一套块注释。这对于 ASP 尤其有用,可以在为 ASP 块添加高亮显示之外允许保持 HTML 注释。
另一套块注释的格式为“Block Comment On Alt = ”和“Block Comment Off Alt = ”,每种格式后接最多 19 个定义注释标志符的字符。块注释的第一个字符可以为空格。
如果定义了“Block Comment On Alt”而未定义“Block Comment Off Alt”,则注释将在行尾停止。它有效地实现块注释也能用于行注释。
UltraEdit/UEStudio默认情况下会在遇到单个块注释结尾字符串时结束任何块注释。 要使UltraEdit/UEStudio将所有块注释开始字符串与所有块注释结束字符串确切匹配,需要指定内嵌块注释命令。 通过添加NestBlockComments命令到语言定义行(即 /L3"HTML" NestBlockComments ...)来实现。
文件扩展名/类型
语法加亮取决于文件名或扩展名。更常见的是使用扩展名,而指定扩展名用于该语言时应使用以下字符串:"File Extensions = " 且每个扩展名以空格分开。 在此指定的文件扩展名不区分大小写。
文件扩展名是文件名中最后一个点之后的内容。 “File Extensions = ”声明之后可以接多达 97 B 的内容。 如果在此指定的一系列文件扩展名超过 97 B,则无法解析。
用户可以将指定文件扩展名的最后替换为 "*",从而指定语言为语法加亮的默认设置。 该设置也将用于高亮显示未保存的文件或没有指定扩展名保存的文件的文件类型。
要指定一个文件名(而非文件扩展名)用于确定语言,应该使用以下字符串:"File Names = " 且每个名称以空格分开。 必须包括扩展名,即:"File Names = ThisFileName.xml" “File Names = ”声明之后可以接多达 125 B 的内容。
工作语法分析
如果首行包括如下预期中的 Perl/XMLPerl说明内容,Perl 和 XML 文件可能在没有后缀名的情况下被保存并予以相应突出显示:
Perl
#!/usr/bin/perl
PHP
#!/bin/php
Python
#!/bin/python
XML
文件名/文件扩展名注意事项
在同一个词语文件中使用文件名和文件扩展名选项需要注意以下事项:
1. 文件名选项不能指定包含空格的名称。
2. 文件名选项不能与文件扩展名选项组合使用。
3. 如果使用文件名选项定义了一种语言,使用文件扩展名选项定义相同词语文件中的另一种语言,且两个定义有重叠部分,则使用文件名选项定义的语言必须具备较少的语言数量,例如:
示例 1 - 无法工作:
/L6"XML General" XML_LANG Noquote ...File Extensions = XML XUL XSD XSL XSLT
/L12"XML Special" XML_LANG Noquote ...File Names = ThisIsJustAFile.xml
示例 2 - 可以工作:
/L6"XML Special" XML_LANG Noquote ...File Names = ThisIsJustAFile.xml
/L12"XML General" XML_LANG Noquote ...File Extensions = XML XUL XSD XSL XSLT
颜色选区
指定颜色代码可以通过添加一行,并在该行首带有 /Cn,其中 n 是 1 到 8 的颜色索引。该区段的描述或名称可以紧跟 /Cn 之后在引号中指定。如果有此描述,则在设置该语言的颜色时将显示此描述。描述可以多达 24 个字符。
所有指定的信息保持有效,直到用新命令信息覆盖。
下面的示例指定了第一个语言用于带有 'C', 'CPP', 'H' 或 'HPP' 的文件。这些词语使用的颜色为第一个可选的颜色,且注释字符为 //。
/L1"C/C++" Line Comment = // Block Comment On = /* Block Comment Off = */ File Extensions = CPPC H HPP
/C1
auto
break
case char const continue chr$
default do double
大小写区分
如果该语言不区分大小写,可以在命令行添加关键字“Nocase”,即:
/L1 Line Comment = // Nocase File Extensions = CPPC H HPP
字符串
使用很多编程语言时,单引号和双引号之内的字符视为文字字符串,词语和注释识别应予忽略。这是UltraEdit的默认行为。有些语言(如 HTML 等)不希望此类行为。为帮助此类语言,可以在命令行添加关键字“Noquote”来覆盖默认行为,即:
/L1 Noquote File Extensions = HTM
UltraEdit现在支持可配置的字符用于引号字符串。默认用于字符串的字符时单引号 (') 和双引号 (")。它们可以用关键字 "String Chars = " 后接最多两个字符来覆盖。仅当需要使用不同于默认的符号时才需要此操作。如果,例如希望对字符串仅使用双引号时,则可以使用类似下面的行:
/L1"C/C++" Line Comment = // Block Comment On = /* Block Comment Off = */ String Chars = " File Extensions = CPPC H HPP
请注意“String Chars”部分。
此外,如果定义的字符串有两个字符(或使用默认)且希望对每个字符串类型使用不同的颜色,即可用某一颜色组在一行里自行包含该字符(即:双引号)。这将覆盖由该字符包围的字符串使用的可配置颜色。
/L1"C/C++" Line Comment = // Block Comment On = /* Block Comment Off = */ String Chars = '" File Extensions = CPPC H HPP
/C1
auto
break
"
…
上面的示例中,所有以双引号 (") 包围的字符串将使用颜色组 C1 着色,而以 (') 包围的字符串将为字符串使用默认颜色。
换码符
在很多语言里有一个专门指定的字符用来引用“换码符”。它用于覆盖正常的字符串字符(及其它字符)。如果某字符串定义为自身包含通常用于定义字符串的引号字符,则语法加亮将该引号解释为字符串的结束。如果该引号符以“换码符”引导,则该引号符将被正确处理为字符串的一部分,而非其尾部。
换码符定义如下:
/L1"C/C++" Escape Char = \ …
在此例子里,换码符定义为反斜线。
关键字
请注意所有以相同字符开头的词语可能都在同一行或分布在多行里,而如果它们分布在多行,必须一个跟着另外一个,中间没有空行或其它行。
如果该语言区分大小写,字母“A”与“a”不同,且以“A”开头的单词必须与“a”开头的词在不同的行。如果该语言不区分大小写,以“A”开头的单词必须与“a”开头的词在相同的行。
以子字符串开头的关键字
在一些语言里会出现希望加亮以特定子字符串开头的关键字,而完整的单词未知。UltraEdit提供的能力可以定义子字符串,这些子字符串用于确定单词是否应加亮。如果是,它将相应地加亮。
子字符串应定义为与任何其它关键字集相同,而包含子字符串的行应以“** ”开头且所有子字符串应在同一行,如:
** aaabbb
以上示例将加亮任何以“aaa”或“bbb”开头的词。
以 '/' 开头的词
因为UltraEdit使用 '/' 作为命令字符,要加亮的字符需要特殊处理。要加亮以 '/' 开头的词,该行应以 '// ' 开头并后接关键字,如:
// /我的关键字 /另一个关键字
针对 HTML
HTML 在很大程度上与其它语言不同,为更好地帮助用UltraEdit编辑 HTML 文件,添加了 "HTML_LANG" 关键字。如果有这个关键字,特殊字符 '<' 和 '/' 可以按需要置于任何关键字之前,无需所有带特殊('<' 和 '/')字符的关键字都在同一行。这种情况下,通常要求以相同字母(a-z 等)开头的词必须在同一行或连续的行里。
以下示例为 HTML 的词语文件片段:
/L3"HTML" Line Comment = // HTML_LANG Block Comment On = File Extensions = HTM HTML
/C1