vim - 如何在区域中应用语法高亮?

标签 vim plantuml

我们在 HTML 文件中包含此评论

<!--
@startuml
A --> B : DoWork
B --> C : DoWork
@enduml
//-->

注释中是PlantUML代码。我们如何在 HTML 注释中对 PlantUML 代码进行语法突出显示?

我们已经安装了https://raw.githubusercontent.com/aklt/plantuml-syntax/master/syntax/plantuml.vim当没有 --> 妨碍时它工作正常。 --> 显然与文件 /usr/share/vim/vim90/syntax/html.vim 中的模式匹配。

我们的 ~/.vim/vimrc 有这样的设置:

autocmd FileType xhtml
    \ syntax include @iPlantUML syntax/plantuml.vim |
    \ syntax region rPlantUML start=/^@startuml$/ end=/^@enduml$/ keepend fold contains=@iPlantUML contained containedin=htmlComment

我最好的猜测是,当 VIM 找到 --> 时,VIM 根据文件 /usr 中的 htmlComment 认为这是 HTML 注释的结尾/share/vim/vim90/syntax/html.vim。如何解决这个问题?谢谢。

最佳答案

语法高亮没有被破坏。您的代码片段是。

-->结束 HTML 注释(请参阅 HTML spec )。在浏览器中也是如此。我将您的代码片段粘贴到 HTML 和 XHTML 文件中。 HTML 案例将显示“B : DoWork”之后的所有内容,而 XHTML 会给出 XML 解析错误。

根据规范,甚至不能有 --尽管大多数浏览器似乎对此相当宽容,但在 HTML 注释中。转动箭头,如 <--仍然不是正确的 HTML,但它似乎可以工作(直到它不能工作的时候)。

Plantuml 还允许使用短箭头(请参阅 PlantUML Reference Guide Chapter 1.1 ),这不会干扰 (X)HTML 注释。然而,这不会产生带有虚线的箭头,而是带有实线的箭头。

<!--
@startuml
A -> B : DoWork
B -> C : DoWork
@enduml
//-->

它可以在 Vim、plantuml 和浏览器中运行。

除非 plantuml 中有未记录的功能,否则您将不得不使用虚线箭头。

编辑: @Fuhrmanator 提出了真正有创意(甚至记录在案!)的解决方法,即指定箭头颜色,从而打破 --顺序。非常感谢!

PlantUML 使用#A80036 (或 #darkred )作为所有箭头颜色的默认值(请参阅 PlantUML 引用指南第 12.3 章)。除非有人决定更改默认颜色,否则可以通过编写以下内容来获得与问题中相同的图表:

<!--
@startuml
' Redundant color spec to break up double minus not permitted by HTML
A -[#A80036]-> B : DoWork
B -[#A80036]-> C : DoWork
@enduml
//-->

关于vim - 如何在区域中应用语法高亮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76116612/

相关文章:

regex - 我如何使用 vim 替换所有匹配正则表达式的整行

uml - 如何重新排列 UML 状态图中的 block

architecture - 如何在单个页面中制作多个图表

visual-studio-code - 是否可以在 markdown 文件中进行 plantuml 语法高亮显示?

plantuml - 如何在类图中获得非线性布局?

vim - 更改编码后,gVim 无法识别 imap 中的元 (Alt) 键

vim - MacVim:Pydiction 无法使用

vim - 使用 :Vexplore effectively

vim markdown 语法高亮是非常错误的

uml - 如何在 PlantUML 中创建带有 continue 语句的事件图