VIM突出显示匹配开始/结束

时间:2014-12-16 05:39:26

标签: vim syntax syntax-highlighting verilog vim-syntax-highlighting

我正在尝试找到一个插件,用Verilog突出显示匹配的开始/结束语句。 VIM使用花括号/括号,但它不适用于它的开头/结尾。我希望VIM突出正确的开始到正确的结束。

3 个答案:

答案 0 :(得分:3)

在我看来,你最好的选择是使用matchit。此脚本是vim运行时的一部分,可以通过将以下行添加到.vimrc来轻松加载:

runtime macros/matchit.vim

标准的Verilog文件类型插件已包含您需要的matchit配置:

" Let the matchit plugin know what items can be matched.
if exists("loaded_matchit")
  let b:match_ignorecase=0
  let b:match_words=
    \ '\<begin\>:\<end\>,' .
    \ '\<case\>\|\<casex\>\|\<casez\>:\<endcase\>,' .
    \ '\<module\>:\<endmodule\>,' .
    \ '\<if\>:\<else\>,' .
    \ '\<function\>:\<endfunction\>,' .
    \ '`ifdef\>:`else\>:`endif\>,' .
    \ '\<task\>:\<endtask\>,' .
    \ '\<specify\>:\<endspecify\>'
endif

通过这种方式,您可以使用%键匹配开头/结尾,就像您可能已经为括号所做的那样。

这并不是你想要的,因为虽然它允许你找到一个开头的匹配结尾,但它不会为你突出显示它。我做了一些研究,显然那里有code snippet around for that;并且已经有人将该代码转换为插件,名为hl_matchit。别忘了查看这个插件的帮助页面:

:help hl_matchit.txt

请注意,vim安装中包含的Verilog文件类型插件不支持Verilog 2001中引入的ifndefelsif子句。如果您需要,那么我建议您也安装verilog_systemverilog.vim之前已经提到的插件,但使用fork我正在改进,其中包括上述更新,以及其他修复/改进。

答案 1 :(得分:1)

回答你的问题。查看语法文件systemverilog.vim 25行:

syntax region svCase matchgroup=svConditional start="\<case\|casex\|casez\>" end="\<endcase\>" contains=ALL
  • syntax是一个vim命令(:he syntax以获得更多解释)
  • region地区关键字
  • svCase只是名字
  • matchgroup - 用于以下开始或结束模式的语法组仅匹配。
  • startend - 用于标记开始和结束语法区域的正则表达式
  • contains=ALL表示该区域内将接受所有其他群组。

希望你找到。

答案 2 :(得分:1)

我不知道有任何插件可以执行此操作,但您可以从相关的html_MatchTag plugin中获取该功能,该功能通过适应Verilog文件类型并替换相应的HTML标记来实现此功能。正则表达式。