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

use*_*021 5 syntax vim verilog syntax-highlighting vim-syntax-highlighting

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

Vit*_*tor 6

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

runtime macros/matchit.vim
Run Code Online (Sandbox Code Playgroud)

标准的 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
Run Code Online (Sandbox Code Playgroud)

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

这并不完全是您要查找的内容,从某种意义上说,尽管它允许您找到开头的匹配结尾,但它并没有为您突出显示它。我做了一些研究,显然有一个代码片段;并且有人已经将该代码转换为一个名为hl_matchit的插件。不要忘记检查这个插件的帮助页面:

:help hl_matchit.txt
Run Code Online (Sandbox Code Playgroud)

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