python - vim 语法关键字仅突出显示未绑定的事件
问题描述
我有一个包含以下定义的语法文件:
syn keyword pythonBuiltinFunc __import__ abs all any
\ bin bool bytearray
\ callable chr classmethod compile complex
\ delattr dict dir divmod
\ enumerate eval
\ filter float format frozenset
\ getattr globals hasattr hash hex
\ id input int isinstance issubclass iter
\ len list locals
\ map max min next
\ object oct open ord pow property
\ range repr reversed round
\ set setattr slice sorted
\ staticmethod str sum super
\ tuple type vars zip
\ nextgroup=pythonArgs skipwhite
next
问题在于,即使该名称被引用为对象的属性(如 in ),这也会匹配(eg) 的出现obj.next
,这会打乱突出显示。
虽然我可能会认为不隐藏内置名称很有用,但我不确定我是否会为有界名称购买它。
是否有人对如何应用上述定义有想法,但排除我下面提到的病理情况?我想我会在单词模式中允许空格,但在匹配中忽略它?
解决方案
为了使用 Vim 的语法包含规则排除对象属性中的那些内置函数,您必须定义一个模式来检测对象;我想这是不可能的。
这样您就可以将这些关键字转换为:syntax match
并向其添加后向断言以避免匹配为 的一部分obj.builtin
,如下所示:
:syntax match pythonBuildinFunc "\.\@<!\<next\>"
推荐阅读
- java - 尝试更新进度条
- mysql - Excel Vba从mysql数据库中删除行的问题
- ocaml - 解析ocaml时通过eol分隔列表
- python - 为什么`numpy.ndarray.view`会忽略之前对`numpy.ndarray.newbyteorder`的调用?
- node.js - Mongoose - 在中间件中找不到模型方法
- reinforcement-learning - 了解游戏 2048 示例的强化学习
- c# - C#如何让应用程序接收我的输入
- google-cloud-sql - 能够连接,尽管授权网络中没有外部 IP / 网络?
- opencart - Opencart 2.3.0.2分类foreach产品作为产品克隆无限制
- git - git diff - 仅显示更改的目录