0

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

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

2)我的Asm中的指令有一个共同的格式:

INSTR OP1, OP2 ..; 即空格将指令名称与操作数分隔开来。

我认为为此我可以只在“关键字”中定义所有 Asm 命令,因为空格符号默认位于'iskeyword'. 我对吗 ?

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

4

1 回答 1

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 项目中的二进制文件,在 Linux 上编译(例如从 Mercurial 源代码)也不是很困难。

借用其他语法元素

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

更多提示

在编写语法时,您通常需要找出导致突出显示的语法组。:syn list显示所有活动组,但安装SyntaxAttr.vim 会更容易 - 显示光标下字符的语法突出显示属性插件。

于 2013-05-08T12:21:38.960 回答