regex - Vim 语法用空格突出显示两个特定的单词(正则表达式)
问题描述
我已经创建了这个名为“~/.vim/syntax/proc.vim”的文件,并且一直在填充正则表达式(我认为这就是他们所说的)。我不得不用这种在 90 年代开发的称为 STOL 的测试语言编写一些测试脚本,用于航天器有效载荷。我在一个安全的环境中工作,所以我唯一可以访问的是 vim。
STOL 允许您编写几种不同类型的打印语句,我想要一些语法突出显示每种类型的消息(错误消息、信息消息等)之间的差异。
我的 vim 颜色配置文件名为“~/.vim/color/molokai.vim”,让我可以将各种正则表达式链接到特定的语法类,该类将调用特定的颜色。例如,为了突出显示关键字,我指定了两行,例如...
" This is the regex where two keywords have been defined
syntax keyword procKeywords IF ELSE
" This is how I link the above regex to a molokai color class
" which is called Keyword
highlight link procKeywords Keyword
我基本上想对 STOL 定义的一些错误和信息消息做同样的事情,如下所示......
EVENT ERROR "This is a error message"
EVENT INFO "This is a info message"
如何匹配两个特定的单词,它们之间有空格?我的"~/.vim/syntax/proc.vim"中需要类似以下内容。以下是错误的,但我只是把它写出来,向你展示我的想法......
syntax match procInfo "EVENT INFO"
syntax match procError "EVENT ERROR"
highlight link procInfo ModeMsg
highlight link procError ErrorMsg
解决方案
你的尝试已经基本奏效了。但是,:syntax match
不会自动强制执行整个关键字匹配 like :syntax keyword
,因此您也会在 eg 上得到错误的突出显示MYEVENT INFORMATION
。您可以通过将关键字边界原子添加:help /\<
到正则表达式来轻松解决此问题:
syntax match procInfo "\<EVENT INFO\>"
syntax match procError "\<EVENT ERROR\>"
推荐阅读
- c++ - 在 OpenGL 中缩放投影矩阵时的意外行为
- python - 使用从 html 到 python 代码的输入的最简单方法是什么?
- javascript - 有没有办法为 mCustomScrollbar 库中的 onCreate 回调属性指定默认值?
- ansible - Ansible critcal AnsibleUndefinedVariable 引用了我没有使用的变量名
- vue.js - Vue 3 - Composition API - 如何使用模板中另一个文件的可重用代码?
- swift - 将函数参数参数中传递的变量名打印为字符串(Swift)
- c++ - 如何为在多个地方做同样事情的多个 catch 创建单个错误处理程序并将该错误处理程序添加到另一个文件中?
- python-3.x - 试图抓取一个酒店预订网站。无法取回奖品
- pool - 托洛卡缺少游泳池
- google-apps-script - 为什么 getEventById() 返回 null?