繁体   English   中英

VIM高亮匹配开始/结束

[英]VIM highlight matching begin/end

我正在尝试找到一个插件,该插件将突出显示与Verilog匹配的开始/结束语句。 VIM可以使用花括号/括号,但不能使用其开始/结尾。 我希望VIM突出显示正确的起点到正确的终点。

我认为,最好的选择是使用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

这样,您就可以使用%键来匹配开始/结束,就像您对括号等所做的一样。

从某种意义上说,这并不是您所要的东西,尽管它可以让您找到开始的匹配末端,但并不会为您突出显示。 我做了一些研究,显然有一段代码片段 有人已经将代码转换成名hl_matchit的插件。 不要忘记查看此插件的帮助页面:

:help hl_matchit.txt

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

回答你的问题。 看一下语法文件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意味着所有其他组将在区域内被接受。

希望你在找。

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

安装系统Verilog插件: https : //github.com/vhda/verilog_systemverilog.vim

安装matchit :he matchit ,您很高兴!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM