我正在为 Direct3D 编写语法文件,但属性有问题:
[unroll]
for(int i = 0...)
这里,“展开”是一个属性。我正在使用正则表达式在方括号内查找一些关键字以将它们标识为属性。我正在使用的正则表达式有效,除非在左方括号之前没有空格:
[unroll] // does not work
[unroll] // works
只要至少有一个,左方括号之前的空格(或制表符)的数量无关紧要。
这是我正在使用的正则表达式(简化为仅匹配展开):
syn match hlslAttribute /^\s*\[unroll\]/
如果使用同样的问题:
syn match hlslAttribute /.*\[unroll\]/
编辑:如评论中所述:它在搜索文件时有效,但在匹配语法突出显示的模式时无效。
当前的语法高亮文件可以在以下位置找到: http: //pastebin.com/zr1bGLt0
要为 .fx 或 .hlsl 文件启用语法高亮,您必须将 hlsl.vim 文件(pastebin 中的那个)复制到任何 Vim 安装中的语法文件位置(/syntax: /usr/share/vim/vim73/ syntax/) 并将这一行添加到您的 .vimrc 中:
autocmd BufNewFile,BufRead *.fx,*.fxc,*.fxh,*.hlsl set ft=hlsl
然后创建一个具有先前扩展名之一的文件并写入:
[unroll]
[unroll]
第二行将是相同的颜色,而第一行不会。他们两个应该和第二个一样。