【问题标题】:VIM highlight matching begin/endVIM 高亮匹配开始/结束
【发布时间】:2023-03-19 18:46:01
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

在我看来,最好的选择是使用 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 中引入的 ifndef 和 elsif 子句。如果您需要,我建议您也安装之前已经提到的 verilog_systemverilog.vim 插件,但使用 fork 我正在改进,其中包括上述更新以及其他修复/改进。

【讨论】:

  • 从头开始。安装底部链接的插件和hl_matchit插件,也链接了。
  • 这个match_words 不包括matchit 中定义的一些原始匹配对,例如 "\:\" 。我怎样才能保留这些对?
  • 你不是说ifdef吗?但是b:match_words 是一个可编辑的字符串,您可以根据自己的需要对其进行修改。
【解决方案2】:

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

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

希望这就是你要找的。​​p>

【讨论】:

  • 该语法命令仅控制突出显示条件的人。 OP 希望动态突出显示当前匹配的关键字。
  • 解释一下。我认为好的起点是:he matchit,也许是this question
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    安装 matchit :he matchit 一切顺利!

    【讨论】:

      猜你喜欢
      • 2015-10-19
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 2021-04-14
      • 1970-01-01
      相关资源
      最近更新 更多