vscode-plantuml

vscode-plantuml

Visual Studio Code的强大PlantUML扩展

该扩展为Visual Studio Code提供全面的PlantUML支持。主要功能包括实时预览、导出、多页图表支持和服务器渲染。编辑辅助方面提供语法高亮、代码片段和自动完成。还支持Markdown集成和从图像提取源码。适用于各类PlantUML图表,是UML建模的有力工具。

PlantUMLVisual Studio CodeUML图预览导出Github开源项目

PlantUML 自述文件

Visual Studio Code 的丰富 PlantUML 支持。

构建状态

注意

本扩展现在强烈推荐使用服务器渲染,因为它更快且更易于设置,而主要的缺点已得到改进:

  • 启用 POST 方法,现在您可以渲染非常大的图表
  • 扩展带有新的 include 处理器,您不会再遇到 include 问题

为确保您能从此更新中受益,请确保您的 plantuml 服务器启用了 POST 支持。

如果没有,比如官方的 https://www.plantuml.com/plantuml,扩展将回退使用 GET,您可能仍会遇到 414 URI 过长 错误。建议设置您自己的服务器。

另请参阅:关于渲染

功能

  • 预览图表,按 <kbd>Alt</kbd> + <kbd>D</kbd> 启动 PlantUML 预览(MacOS 上为 <kbd>option</kbd> + <kbd>D</kbd>)。
    • 自动更新。
    • 支持缩放和滚动。
    • 支持多页图表。
    • 如果图表已导出,则即时预览。
    • 从本地或服务器。
    • 对齐边界
  • 导出图表
    • 在光标处、当前文件中、整个工作区中、工作区选定内容中。
    • 并发导出。
    • 生成 URL。
    • 支持多页图表。
    • 从本地或服务器。
    • 支持图像映射 (cmapx)。
  • 编辑支持
    • 格式化 PlantUML 代码。(已弃用
    • 所有类型的语法高亮。
    • 所有类型的代码片段。
    • 基本自动完成和宏签名支持
    • 支持符号列表。
  • 其他
    • 支持多根工作区。
    • 支持 Markdown 集成。查看演示
    • 支持从图像中提取源代码。

注意:如果您使用自定义的 plantuml.jar,请更新到最新版本以启用 多页图表支持。(晚于 V1.2017.15

格式化 PlantUML 代码已 弃用。不要依赖它,只在它正常工作时使用。我已在自动格式化情况下(保存时格式化)强制禁用它。

支持的格式

*.wsd, *.pu, *.puml, *.plantuml, *.iuml

如何安装

启动 VS Code 快速打开(Ctrl+P),粘贴以下命令,然后按回车。

ext install plantuml

要求

根据您选择的渲染方式,插件有不同的要求。

PlantUMLServer 渲染的要求

一个 plantuml 服务器。参见使用 PlantUML 服务器作为渲染器

本地渲染的要求

必须安装以下内容:

  • Java:PlantUML 运行的平台。
  • Graphviz:PlantUML 需要它来计算图表中的位置。

Mac 快速安装

brew install --cask temurin brew install graphviz

Windows 快速安装

插件集成了 plantuml.jar 和 GraphViz 的副本,所以通常您已经可以使用了。 但如果您想使用自己的 jar 或不同版本的 GraphViz(可能是更新的版本,或有许多依赖 jar):

  • 下载最新的 plantuml.jar 或使用 chocolatey 安装(见下文)。
  • 使用扩展设置 plantuml.jar 指定 jar 位置。
  • 通过定义 Windows 环境变量 GRAPHVIZ_DOT 指定 GraphViz 安装,例如,如果您使用 chocolatey 安装了 plantuml(它自动安装最新的 GraphViz 作为依赖),则为 c:\program files\graphviz\bin\dot.exe
Choco 安装

对于 Windows 用户,majkinetor 介绍了一种轻松安装 plantuml 及其依赖的方法。 以管理员身份运行 cmd.exe,然后运行以下两个命令(如果您已经安装了 chocolatey,则不需要第一个命令,它会失败)。

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin" choco install plantuml

如果您已安装 Java,但仍提示"未安装 Java",请将 Java bin 路径添加到 PATH 环境变量中。

典型文件组织

  • 默认扩展设置适用于独立的 Plantuml 项目。
  • 如果 Plantuml 文件只是您项目的一部分(作为文档),请使用 plantuml.diagramsRootplantuml.exportOutDir 设置组织,例如:
"plantuml.diagramsRoot": "docs/diagrams/src", "plantuml.exportOutDir": "docs/diagrams/out"

您将得到如下的导出结果:

项目文件夹/
  docs/
    diagrams/
      src/
        architecture_overview.wsd
      out/
        architecture_overview/
          architecture_overview.png
  ...项目其他文件夹/
  ...项目其他文件 

Include 文件搜索逻辑

最新版本再次更改了 include 文件搜索逻辑。 现在可以在 settings.json 中配置 includepaths。

新的搜索顺序如下:

  1. 渲染文件的文件夹
  2. settings.json 中配置的 includepaths
"plantuml.includepaths": ["docs/diagrams/style","docs/diagrams/src"],
  1. diagramsRoot

不再需要 includeSearch 设置,因为 plantuml 文件的文件夹和 diagramsRoot 始终都在 include 路径中。

对于新项目,建议不要依赖 diagramsRoot,而是显式配置所有必需的 includepaths

感谢 anotherandi 提供的出色想法和实现!

预览演示

预览页面提供各种缩放/平移操作和对齐功能:

  • 缩放操作(自 2.7.0 版本起):
    • 缩放选定区域
    • 捏合缩放(触控板)
    • 点击放大,alt + 点击缩小
    • Ctrl + 鼠标滚轮放大/缩小
    • 中键点击切换缩放
    • 控制栏的放大 / 缩小 / 切换按钮。
  • 平移操作(自 2.7.0 版本起):
    • 右键拖动
    • 双指移动平移(触控板)
    • 鼠标滚轮
  • 对齐边界(自 v2.8.0 起):
    • 滚动到最底部/右侧/顶部/左侧,预览将对齐到该边界。

    例如,对齐底部在编写长活动图时很有用,它可以帮助您保持焦点在底部的最新部分。

自动更新:

自动更新演示

缩放和滚动:

缩放演示

多页视图:

多页演示

导出演示

导出图表:

导出演示

生成 URL

URL 演示

提取图表源代码

提取演示

关于格式化

格式化演示

如果 editor.formatOnSave 开启,PlantUML 格式化器将被禁用(自 v2.8.3 起)。 因为根据用户反馈,格式化器不够可靠。

关于代码片段

代码片段演示

此插件集成了所有类型的图表代码片段。它们被分为 9 个部分:

  • diagram: 通用图表元素的代码片段。
  • activity: 活动图的代码片段。
  • class: 类图的代码片段。
  • component: 组件图的代码片段。
  • state: 状态图的代码片段。
  • usecase: 用例图的代码片段。
  • sequence: 序列图的代码片段。
  • ui: salt图的代码片段。
  • egg: 一些有趣图表的代码片段,如数独、地球。

例如,输入acife(简短版本)可触发以下代码片段(activity➤if・else):

if (cond1?) then (val1) else (val2) endif

关于符号列表(列出文件中的图表)

list_symbol_demo.png

Ctrl+Shift+O列出文件中的所有图表。您可以在图表开始时为其命名。

@startuml 图表名称 sudoku @enduml

关于渲染

插件支持两种渲染方式:本地PlantUMLServer

本地是默认的传统方式。如果您更关心导出速度,应该尝试PlantUMLServer。

本地: 6个文档, 9个图表, 14个文件导出用时24.149秒 PlantUMLServer: 6个文档, 9个图表, 14个文件导出用时1.564秒

PlantUMLServer渲染的优缺点

优点:

  • 导出速度提高15倍,预览响应更快。
  • 如果您的团队有服务器,无需设置本地环境。
  • 不需要plantuml.exportConcurrency,因为并发性是无限的。

缺点:

  • 无法渲染非常大的图表(414 URI太长)。
  • 无法渲染包含!include的图表。
  • 支持的格式较少:png、svg、txt。
  • 某些设置不适用:plantuml.jarplantuml.commandArgsplantuml.jarArgs

使用PlantUML服务器作为渲染器

要渲染包含include支持的超大图表,请确保您的plantuml服务器启用了POST支持。

如果没有,比如官方的https://www.plantuml.com/plantuml,扩展会回退使用GET,您可能仍会遇到414 URI太长错误。

建议设置您自己的服务器。

  • 您的团队可能已经有了PlantUML服务器,找到服务器地址,如:http://192.168.1.100:8080

  • 如果没有,请按照说明进行设置,推荐使用Docker运行。找到服务器地址,如:http://localhost:8080http://192.168.1.100:8080,可以与团队共享。

  • 在本地机器上运行PlantUML服务器的另一种选择是使用内置的picowebserver,可以简单地运行java -jar plantuml.jar -picoweb,在这里阅读更多信息:https://plantuml.com/picoweb

  • 打开用户设置,配置如下:

"plantuml.server": "http://192.168.1.100:8080", "plantuml.render": "PlantUMLServer",

多语言支持

欢迎翻译。lang.nls.json, package.nls.json

languages demo

Markdown集成

markdown demo

仍推荐使用@startuml / @enduml,这样Markdown中的PlantUML代码可以被此插件的其他功能管理。

扩展设置

此扩展提供以下设置。

渲染选择:

  • plantuml.render: 为导出和预览选择图表渲染器。

PlantUMLServer渲染设置:

  • plantuml.server: 用于即时生成UML图的PlantUML服务器。

本地渲染设置:

  • plantuml.java: Java可执行文件位置。
  • plantuml.commandArgs: 允许您向java命令添加命令参数,如-DPLANTUML_LIMIT_SIZE=8192
  • plantuml.jar: 替代plantuml.jar位置。留空以使用集成jar。
  • plantuml.jarArgs: 允许您向plantuml.jar添加参数,如-config plantuml.config
  • plantuml.includepaths: 指定除源文件夹和diagramsRoot之外的包含路径。

导出设置:

  • plantuml.diagramsRoot: 指定所有图表文件所在位置(相对于工作区文件夹)。
  • plantuml.exportOutDir: 导出的工作区图表将组织在此目录中(相对于工作区文件夹的路径)。
  • plantuml.fileExtensions: 要查找并导出的文件扩展名。特别是在工作区设置中,您可以添加自己的扩展名,以便导出源代码文件中的图表,如".java"。
  • plantuml.exportFormat: 导出格式。默认未设置,用户每次导出时可能选择一种格式。如果不想每次选择,您仍可以设置一种格式。
  • plantuml.exportSubFolder: 将图表导出到与主文件同名的文件夹中。
  • plantuml.exportIncludeFolderHeirarchy: 在导出的文件路径中包含根目录和源图表之间的文件夹层次结构。
  • plantuml.exportConcurrency: 决定导出多个图表时的并发数。
  • plantuml.exportMapFile: 决定导出时是否导出图像映射(.cmapx)文件。

预览设置:

  • plantuml.previewAutoUpdate: 决定是否自动更新预览窗口。

其他设置:

  • plantuml.urlFormat: URL格式。留空以在每次生成URL时选择格式。
  • plantuml.urlResult: URL结果类型。简单URL或准备用于Markdown。
  • plantuml.lintDiagramNoName: 决定图表未命名时是否进行检查。

已知问题

请在GitHub上发布和查看问题

感谢

翻译者

捐赠者

感谢您的鼓励!

Claus Appel, 三島木​一磨, 富吉​佑季, 黒田悦成, Jared Birdsall, Suleyman Cabir Ciplak, Malcolm Learner, Сысоев Максим, Gokan Kenichi, anb0s, Lawrence Yarian, Ahmad Ragab, 山田​暁通


享受使用!

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多