在PDP11/40汇编语言中,以点结尾的数字被解释为十进制数。 我用下面的模式,但不能匹配符号,例如,8.
:什么vim模式匹配以点结尾的数字?
syn match asmpdp11DecNumber /\<[0-9]\+\.\>/
当我与D
取代\.
模式可以毫无问题匹配8D
。任何人都可以告诉我,我的“结束点”模式有什么问题吗?谢谢。
在PDP11/40汇编语言中,以点结尾的数字被解释为十进制数。 我用下面的模式,但不能匹配符号,例如,8.
:什么vim模式匹配以点结尾的数字?
syn match asmpdp11DecNumber /\<[0-9]\+\.\>/
当我与D
取代\.
模式可以毫无问题匹配8D
。任何人都可以告诉我,我的“结束点”模式有什么问题吗?谢谢。
你的正则表达式语法是好的(当然,你可以使用\d
代替[0-9]
),但你的'iskeyword'
值不包括期间.
,所以后结束字(\>
),它可以不匹配。
看起来你正在编写自定义文件类型的语法。一种选择是
:setlocal filetype+=.
在相应的~/.vim/ftplugin/asmpdp11.vim
filetype插件。当句法字符在您的语法中被认为是关键字字符时执行此操作。
否则,请删除\>
以使正则表达式匹配。如果你想确保在这段时间后没有非空白字符,你可以在比赛结束后断言这种情况,例如,像这样:
:syn match asmpdp11DecNumber /\<\d\+\.\S\@!/
注意,一个字由VIM定义为:
甲字由字母,数字和下划线的序列,或其他非空白字符的 序列,以空格 (分离的空格,标签)。这可以通过'iskeyword' 选项进行更改。一条空行也被认为是一个词。
所以你的模式工作正常,如果空格跟在数字后面。您可能想要跳过\>
。
我认为这个问题是你的单词边界标记。试试这个:
syn match asmpdp11DecNumber /\<[0-9]\+\./
请注意,我已经删除了\>
字末端边界。我不确定那里有什么,但是如果你删除它,它似乎就起作用了。 A .
不被视为单词的一部分,这就是您的版本失败的原因。
+1 for PDP11 reference ... – L0j1k 2013-02-28 08:11:18