汇编程序的语法高亮显示

时间:2013-05-08 11:40:55

标签: vim syntax-highlighting

我需要添加对我正在使用的汇编语言的支持(它不是vim支持的x86,68K或8051)。我查看了现有的语法文件,这是我的问题

1)何时使用syn keywordsyn match真的有意义?我的理解是后者支持正则表达式并提供更大的灵活性。另一方面,查看/usr/share/vim/vim70/syntax/asmh8300.vim - 他们在keywordmatch中定义操作码,它真正带来了什么好处?

2)我的Asm中的说明有一个共同的格式:

INSTR OP1, OP2 ..;即空格从操作数界定指令名称。

我认为为此我只能在'关键字'中定义所有Asm命令,因为空格符号默认位于'iskeyword'。我是对的吗?

3)Asm还支持C风格的结构,枚举和注释。我可以从c.vim中借用它的语法定义,否则它将无法工作并需要进行一些调整?

1 个答案:

答案 0 :(得分:3)

如果您拥有一组有限的标识符,并且它们都只包含关键字字符,则:syn keyword是最佳选择。你是对的,因为:syn match提供了功能的超集。从本质上讲,

:syn keyword myGroup foobar

相当于

:syn match myGroup "\<foobar\>"

谨防旧版本

您引用的syntax/asmh8300.vim语法来自2002,它可能不是如何编写语法文件的最佳示例。 (例如,它在其匹配项周围省略了\<...\>,对我来说看起来像是一个错误。它仍然具有Vim 5/6的兼容性东西,不再需要了。)

另外,你真的使用Vim 7.0吗?! Vim 7.0是从2007年开始的,非常已过时。应该可以安装最新版本7.3;如果找不到适合您的发行版的软件包(对于Windows,请检查Cream project中的二进制文件,对compile(例如来自Mercurial源)的Linux也不是很困难。

借用其他语法元素

如果您的语法中嵌入了其他语法,并且明确分隔(例如HTML中的JavaScript),则可以:syn include。但是如果只有类似的结构,最好将它们复制并粘贴到语法中(并至少调整组名)。您也需要小心捕获所有包含的语法组;与语法集群一起,层次结构可能非常复杂!

更多提示

编写语法时,通常需要找出导致突出显示的语法组。 :syn list显示所有活动组,但在安装SyntaxAttr.vim - Show syntax highlighting attributes of character under cursor插件时更容易。