如何让Vim语法高亮识别加号(+)为关键字?
解决Vim语法文件中符号(如+)无法高亮的问题
嘿,这个问题我之前也碰到过!核心原因是Vim的syn keyword并不支持识别非字母数字的符号——它专门用来匹配由字母、数字、下划线组成的关键字,所以print这类正常单词能高亮,+就不行啦。
要搞定符号类的高亮,得换用syn match命令,它支持正则表达式,可以匹配任意字符。下面是具体的修改方案:
1. 基础修改:单独高亮+号
把你原来的代码替换成下面这样:
" 用syn match匹配+号,syn keyword处理字母类关键字 syn match shlSymbols /+/ syn keyword shlKeywords print hi def " 给两组都设置Keyword样式的高亮 hi def shlSymbols Keyword hi def shlKeywords Keyword
2. 批量处理多个符号(如果需要)
如果还要高亮其他符号(比如-、*、/),可以把它们合并到一个syn match里,用正则字符集匹配:
syn match shlSymbols /[-+*\/]/ " 匹配-、+、*、/这些符号 hi def shlSymbols Keyword
3. 避免语境误匹配(进阶)
如果你的语法里有字符串、注释这类特殊语境,不想让这些语境里的+被高亮,可以用containedin参数限制匹配范围。比如假设你的字符串组叫shlString,注释组叫shlComment,可以这么写:
syn match shlSymbols /+/ containedin=ALLBUT,shlString,shlComment
这样就只会高亮代码语境中的+,不会影响字符串或注释里的符号了。
修改完语法文件后,在Vim里执行:so %加载当前文件,再打开你的目标文件,就能看到+正常高亮啦!
内容的提问来源于stack exchange,提问作者kangaroo
相关产品推荐
相关产品推荐

