最近学习51单片机,使用Keil进行汇编编写代码时很多关键字没有高亮显示很不习惯,本身Keil鼠标选择字段操作就让人很无语,因此编辑ASM汇编文件都是用自己比较喜欢的EditPlus。EditPlus支持强大的、可自定义的语法高亮功能,可以创建自己的语法文件来支持其它设计语言。只要将创建的语法文件添加到“参数选择”对话框中的“设置&语法”中即可。但是网上没有现成的语法配置,有也是很多关键字显示不全,因此自己改了一个,用的还行。
要用EditPlus语法高亮,就先了解语法文件究竟怎么编辑,里面的参数代表什么。可参见java.stx。
说白了语法文件是一个扩展名为“.stx”并按预定格式编写的纯文本文件, 所有语法声明必须以“#”为前缀,具体说明如下:
头部信息
序号代码说明
1
#TITLE
这里定义语法文件标题,它必须出现在语法文件的首行,否则EditPlus将不能正确读取它的信息。
2
#DELIMITER
指定用于分解关键字的定界符。你不必指定空格和制表符,它们是程序内置的缺省定界符。
3
#QUOTATION1
指定引用语标记,例如单引号,这里只能定义一个字符。
4
#QUOTATION2
指定另一种引用语标记,例如双引号,这里只能定义一个字符。
5
#CONTINUE_QUOTE
这个选项允许不停止引用而将它延续到下一行。定义为“y”时允许跨行引用,定义为“n”时不允许跨行引用,“n”是默认值。
6
#LINECOMMENT1
指定一个行内注释标记。如果你以“;”作为行内注释符的前缀,那么仅在它位于行首时才会起作用。
7
#LINECOMMENT2
指定另一个行内注释标记。
8
#COMMENTON
指定一个块级注释的开始标记。
9
#COMMENTOFF
指定一个块级注释的结束标记。
10
#COMMENTON2
指定另一个块级注释的开始标记。
11
#COMMENTOFF2
指定另一个块级注释的结束标记。
12
#ESCAPE
指定避让字符,这里只能定义一个字符。
13
#CASE
指定敏感性。取值为“y”或“n”默认值为“n”。
14
#PREFIX1~#PREFIX5
指定前缀关键字,任何跟随前缀的单词将被视为已经处理的关键字。可以改变顺序号,看看显示颜色变化。
15
#SUFFIX1~#PREFIX5
指定后缀关键字,任何在后缀之前的单词将被视为已经处理的关键字。
16
#HTML_EMBEDDED
如果是像PHP这样的HTML植入脚本,指定为“y”。可以参考“php.stx”中的用法。
17
#SCRIPT_BEGIN
指定HTML植入脚本的开始标记,仅在“#HTML_EMBEDDED”定义为“y”时发生作用,请参考“php.stx”中的用法。
18
#SCRIPT_END
指定HTML植入脚本的结束标记,仅在“#HTML_EMBEDDED”定义为“y”时发生作用,请参考“php.stx”中的用法。
19
#HEREDOC
指定一个字符串用于Perl和PHP文件中的heredoc。例如:#HEREDOC=<
20
#AUTOCASE
如果希望使用关键字自动完成特性,将它定义为“y”。
21
#NUMBER_PATTERN
指定专用的数字语法高亮。
22
#SPECIAL_STX
指定专用的语法文件,留空则可用于其它语法文件。
同其它语言一样,你也可以在语法文件中插入注释,注释行必须以英文的分号“;”开始。如果你希望指定英文分号作为一个关键字,必须以避让字符“^”作为它的前缀。
关键字组
每个关键字组以#KEYWORD=开始,之后定义该组的描述。关键字清单从下一行开始,如果需要在关键字里包含“#”,必须以避让字符“^”为前缀像“^#”这样。在这种情况下,“#”标记不应该包含在“#DELIMITER”定义中。最多可以定义10个关键字组。
如:
KEYWORD=Reserved words
abstract
boolean
break
#KEYWORD=Compiler directives
...
代码太多就不贴了,网盘中有【单片机】-》【C51】中,名为asm.stx。拷贝到EditPlus软件目录,添加到语法就行。
具体操作如下:打开EditPlus,选择【工具】-》【参数设置】-》【设置&语法】,右边添加文件类型ASM,文件扩展名:asm,语法文件选择刚拷贝的asm.stx,勾选“关联资源管理器”,最后“确认”即可。Asm文件就会被EditPlus软件默认打开,如下所示:
关键字颜色设定,具体在【语法颜色】中设定,如下所示:
最后看下效果:
特别说明:
跳转如MAIN:,我选择用#SUFFIX3=:,为什么用3,因为颜色好区分,
增加注释#LINECOMMENT2=//,Keil里面能识别。
增加区块注释开始标记#COMMENTON=/*,结束标记#COMMENTOFF=*/,同样Keil里面能识别。
前缀关键字增加#PREFIX2=#,因为ASM好多16进制数都是以#开头,好区分,为什么用2,同样为了颜色好区分。