工作中的调试时查看日志或是shell的编码都可以使用ultraedit,这个小东东真的是魅力无限、功能强大。相信ultraedit的语法着色syntax highlighting功能不少朋友都体验过来,估计大部分都是用做编码的,特别是那种没有固定IDE的语言如htm、shell……使用ultraedit,再加上正确的配置就可以和别的IDE一样的效果,也可以说DIY一个属于自己的编程环境,比如在unix下面编程,c也好、shell也罢,用vi真是痛苦啊,即使你是一个vi高手,能够熟记数十条指令,在编写的时候,效率也会大打折扣的。如果使用ultraedit中的语法着色syntax highlighting功能,那么ultraedit就相当与一个IDE,在上面可以象在vs stidio上一样编程,有高亮highlighting、也有缩进indent,就像下图所示:
图1
上图就是UltraEdit / UEStudio '05的工作环境,在你编辑完的时候,还可以用ultraedit的ftp功能将编辑好的代码ftp上去。
恰当的使用和设置语法着色syntax highlighting功能,可以使你的工作事半功倍,下面我就将分2个部分给大家共享一下我对UE语法着色功能的理解:大体介绍和DIY自己的模版及一起小技巧。由于我使用ultraedit的时间也不长,表达能力也有限,也是第一次写这种文章,所以文中一些不恰当的地方还请朋友指正,^_^
第一部分:语法着色的大体介绍
Syntax highlighting语法着色可以辨别事先定义的符号,并可以将它们以不同的颜色展现出来,这种功能对于coder很有用,对具有同一要求的其他使用者来说也是非常有益的。
UltraEdit最大可以支持20套语法着色模板,每一套模版根据用户自己的需求自己配置,使文档中分成许多的组,每一组都可以以不同的颜色显现出来,在UltraEdit中“组”的类别可以分为一下6种:
? 普通文本(没有被辨认出来的文本)
? 注释行
? 交换注释块
? 字符串
? 数字(0-9)
? 自定义的语法符号(想被着以不同颜色的文本)
语法着色功能的在高级(Advanced)->配置(Configuration)->编辑器显示(Editor Display)->语法着色(Syntax Highligthing)中可以被用户设置,有的版本在高级(Advanced)->配置(Configuration)->语法着色(Syntax Highligthing)下面设置。
图2
在设置的时候,首先要选择语言,也就是用户的模版,在开始的时候,UltraEdit已经给用户提供了一些常用的模版,选定好了模版以后,用户要在下面的颜色组中选择你想要设置哪一个组的颜色,选定了一个组以后,就可以点击“颜色”和“背景”的颜色框,为这个组设置颜色(当UltraEdit辨认某一个字符属于这个组,就会以这个颜色为其着色)。当选择除“常规文本”之外的组时,还可以为这个组设置字体样式(当UltraEdit辨认某一个字符属于这个组,就会以这种字体显示字符),这些粗体、斜体和下划线的设置可能使文本不可用,所以这里建议使用“普通”,及固定点阵字体(这个功能低版本可能没有)。
图3
那么应该在哪里配置这些模版和它们的组呢?在UltraEdit的安装目录下面有一个配置文件"WORDFILE.TXT",在这个文件中用户可以根据需要配置自己想要的模版,这个文件会在UE启动的时候被自动加载,在高版本的UE中,若是修改了这个文件,保存一下就可以同步其他文件,不再需要关闭再重启UE。
一般UE开始会为用户定制一些通用的模版,供用户使用,用户可以点击“视图”,查看着色配置,下图就显示了目前一共有13中可以使用的语法着色模版,现在的打开的文件并没有使用任一种模版。
图4
在这一部分,我们先试着读懂系统自带的模版,知道每一部分的作用,在第二部分中,我们可以尝试着编写根据自己需求定制的模版。
图5
上图就是配置文件"WORDFILE.TXT"里面的一段内容,这是系统自带的一个模版,我将每一个模版分成了2个部分,第一部分是模版的前半部分,在这里可以利用系统里面的关键字来设置一些配置,比如:L1表示了模版的序号,从L1到L20,可以定义20套模版,“C/C++”表示了这个模版的名字,这在“视图”中可以查看到,Line Comment = //表示了注视行是以”//”开头的…….在第一部分,每一行必须以”/”打头,你也可以将多行并成一行,就像上图所示那样。在第二部分中用户可以自行定义一些想被着色的关键字,比如/C1"Keywords" 就是用户定义的第一个组,名字为"Keywords",在这个组里,用户可以把想被着色的关键字列举出来,在图3所示的地方,你可以设置想为这些所列举出来的关键字的颜色。
下面说一下模版的第一部分的设置:
1. 注释行
用户可以用"Line Comment = 字符串"来设置想要制定的注释行,这个字符串最多支持5个字符,如果少于5个字符的话,则后面要加上空格和其他关键字分割。
图6
图7
在图7中,虽然设置了注释字符为“/1234567”,但是UE最大只支持5个字符,所以就取前5位为注释字符,即“/1234”,所以在测试文本中可以看到第四行并没有被注释出来。
并且在UE中这一部分对大小写和空格的要求都是很严的,如果你在wordfile.txt中写出”/line Comment = /1234567”这样的命令,UE是不认的(最起码我机器上这个版本的UE不认),还有” /line Comment=/1234567”UE也是不认的,因为等号两边没有空格。这种要求对别的关键字也是同样有约束限制的(下文就不做特殊说明了),比如,在定义模版名称的时候这样写”/L14 Test”,UE不认,因为在模版序号L14和模版名称Test之间有一个空格,而UE的要求是不可以留有空格的。
图8
在上图中,定义注释行的字符串长度为5(大于5也可以),那么后面就不需要用空格来分割其他的关键字了,当然,为了代码的可读性,最好还是加上分隔符。
还有一种定义注释行的方法:"Line Comment Alt = " ,使用方法和一些注意事项和"Line Comment = 字符串"一样,这里就不再赘述了。
有些时候,空格也会作为注释行字符的一部分,用来标注哪些行是应该被注释掉的,用下面这种定义方式可以实现这种功能:
"Line Comment Num = xCC "
其中x表示注释行字符的长度(1到5),后面必须紧跟着注释行字符(可以是空格),比如"Line Comment Num = 3CC "(注意CC后面有一个空格)表示以”CC ”开头的字符都属于注释的范围。具体效果如下图:
图9
另外注释行还有一个有效范围的设置方法,就是说在哪一些范围内,这些字符会被注释掉,反之,即使符合你前面的定义,也不会有效。实现方法有两种:
"Line Comment Preceding Chars = […]”和
"Line Comment Valid Columns = [1-3,5]”
对于第一种Line Comment Preceding Chars的定义方法来说,每一个字符都是有效的,在括号中可以设置一个无效字符。
如果没有Line Comment Valid Columns的话,注释字符在每一处都是有效的,但是如果定义了Line Comment Valid Columns,那么注释字符只在后面定义的中括号中制定的范围有效。"Line Comment Valid Columns = [1-3,5]”就表示了注释字符的首位置在1,2,3,5列时是有效的,其他的位置是无效的,图示如下:
图10
注释字符为”CC”,在测试文本中,第一、三行的CC首位置在第2、5列,符合要求,所以被注释出来了,第三行的CC首位置在第4列,so……..
2. 注释块
多行的字符也可以被块注释,就像C++中的”/*”和”*/”可以实现块注释的功能。在UE中,是以"Block Comment On = "定义块注释的开始,以"Block Comment Off = "定义块注释的结束。和注释行一样,注释块的开始和结束同样最大支持5个字符。
如果只用"Block Comment On = "定义块注释的开始,而没有定义注释块的结束,那么UE只会注释注释块开始的那一行,这样的话,就和注释行的作用一样了(不过在有的高版本中的UE中,好像做的跟C++类似,没有定义注释结束的话,就会一直注释下去)
图11
3. 文件类型
在这里,模版的使用还可以跟文件类型关联起来,在UE中“文件类型”属性可以实现在打开某种文件的时候,使用特定的模版打开。定义方法如下:
"File Extensions = "
如果列举多种文件类型的话,每种文件类型之间要加空格分隔。
如果你想实现某一个文件的时候,套用某一种模版,那么使用一下定义:
"File Names = "
如果列举多种文件名称的话,每种文件名称之间要加空格分隔。
图12
4. 大小写敏感
如果你不想你的模版对大小写敏感,那么你可以用关键字“Nocase”,象下面这样写:
/L1 Line Comment = // Nocase File Extensions = CPPC H HPP
或者不写在同一行:
/L1 Line Comment = // File Extensions = CPPC H HPP
/ Nocase
5. 字符串
在一些语言中,字符串都是放在一对单括号或者双括号中,在字符串中,注释和关键字是不可用的,这就是UE的默认设置。但是在一些语言中,例如HTML,是不需要这样的,为了方便这些语言,模版中可以使用关键字"Noquote":
/L1 Noquote File Extensions = HTM
UE中同样可以配置规定字符串的字符,默认设置是单引号和双引号。在UE中可以通过关键字"String Chars = "来设置,最多支持2个字符,例如C++的模版:
/L1"C/C++" C_LANG String Chars = "'
这样的话,在这个模版中,被单引号或者双引号括起来的字符,就成为字符串了,在UE中可以配置字符串的着色,这在图2中可以看出来,如果您想让两个规定字符串的字符分别以不同的颜色显示,那么有一种方法,先用”String Chars = “定义两个,再在用户自定义的组中,定义一个,这样的话,按照UE的内部的处理,后定义的会重写前面所定义的,这样就可以以两个颜色显示,图示如下:
图13