Vim: 编辑 python.vim 语法文件以实现类似 Textmate 的高亮显示

10

我试图编辑python.vim语法文件,以复制Textmate中python的语法高亮。附带的图片说明了我正在努力实现的函数参数的高亮显示。

imgur pic of code

在Textmate中,self、a和b被突出显示,但在Vim中没有。我想我必须执行以下操作:

  1. 匹配一个新区域

syn region pythonFunction start="(" end=")" contains=pythonParameters skipwhite transparent
尝试匹配一个逗号后面的字符串。
syn match pythonParameters ".*" contained

因此,在第2点中,“.*”目前会匹配任何字符串,必须进一步扩展以正确处理。但是,我不确定自己是否走在了正确的道路上,因为第2个匹配没有限制在括号()之间的区域。欢迎提供任何提示或建议。

编辑1:如果有人想知道最终结果是什么。

这是我的Python vim语法高亮。

imgur pic of code

编辑2:因此,为了达到最彻底,我创建了一个Github页面。

http://pfdevilliers.github.com/Pretty-Vim-Python/


这比我发布的内容要复杂一些。我会很感兴趣看到你的最终代码。 - Spencer Rathbun
当它不再像目前这样混乱时,我会尽快在 GitHub 上分享它。我从 ruby.vim 语法中借鉴了一些内容,而你的示例则为我提供了足够的信息来弄清我需要的其余部分。 - pfdevilliers
1
这是一个指向Github上文件的链接:http://github.com/pfdevilliers/Pretty-Vim-Python。欢迎提出任何改进意见。 - pfdevilliers
2个回答

6

好的,你遇到了几个问题。

  1. 已经有一个名为pythonFunction的区域,用于高亮显示def和函数名。
  2. 这个区域将匹配任何括号,无论在哪里。

因此,找到pythonFunction的匹配项,并将其更改为以下内容:

syn match   pythonFunction
      \ "\%(\%(def\s\|class\s\|@\)\s*\)\@<=\h\%(\w\|\.\)*" contained nextgroup=pythonVars

添加 nextgroup 告诉 vim 在函数定义后匹配 pythonVars。

然后添加:

syn region pythonVars start="(" end=")" contained contains=pythonParameters transparent keepend
syn match pythonParameters "[^,]*" contained skipwhite

最后,要想真正地将其突出显示,找到 HiLink 部分,并添加:

HiLink pythonParameters       Comment

Comment 更改为您想要的分组,或添加自己的分组。我自己使用 Statement


0

Vim,高亮匹配的括号(),方括号[]和花括号:{ }

设置光标悬停在括号、方括号或花括号上时前景色和背景色的配置选项如下:

hi MatchParen      ctermfg=16  ctermbg=208 cterm=bold

启用/禁用光标下行的背景颜色:

:set cursorline
:set nocursorline

设置光标下行的背景色:

hi VisualNOS                   ctermbg=999
hi Visual                      ctermbg=999

enter image description here

这是我的改编:

https://github.com/sentientmachine/erics_vim_syntax_and_color_highlighting


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接