最近学习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=<<EOF. |
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,同样为了颜色好区分。