在 Vim 中使用 graphviz.vim 画图

本文主要介绍 graphviz.vim, fork 自 wmgraphviz.vim,但是除了复用补全数据,我几乎重写了所有内容,并做了很多改进。

可能很多人没用过 graphviz,它是一个开源的图可视化工具,使用 DOT 语言进行绘制,优点是可以自动布局,尤其适用于复杂的流程图,结构图等等。官方有很多示例,使用时也可以参考一些其他的优秀案例,比如:

From Milo Yip

本文并不会对 graphviz 本身做太多介绍,而是分享如何在 Vim 中使用 graphviz.vim 插件方便画图。

wmgraphviz.vimgraphviz.vim 的前身,提供了一些补全,一键编译,查看编译后文件等功能。但是使用起来感觉不是那么 fashion,很久以来也几乎没怎么更新,比如依然在于 ! 进行外部调用。

graphviz.vim 整个插件非常简单,本质上就是封装了一些编译,一键查看的命令而已,主要改进包括:

  • 命令更少,配置项更简单。

    只有 :Graphviz:GraphvizCompile 两个命令,:Graphviz 用于打开编译后的文件,:GraphvizCompile 用于编译当前文件。如果 :Graphviz! 则相当于 :GraphvizCompile | Graphviz。对于可选项,我采用了传入参数进行调控。

  • 支持 ncm2coc.nvim

    这个很简单,只是简单封装了下 Omni 补全以适应 ncm2 和 coc.nvim。

安装

使用 vim-plug 进行安装:

Plug 'liuchengxu/graphviz.vim'

用法

:Graphviz 打开编译后的文件,文件名取自当前文件,辅以不同后缀。默认是打开 pdf 类型,比如当前打开的文件叫 foo.dot,那么 :Graphviz 是尝试打开 foo.pdf 的文件,可以传入扩展名进行指定。

" 默认打开 pdf 文件
" 可选项: 'ps', 'pdf', 'png', 'jpg', 'gif', 'svg'
:Graphviz

" 打开 png 文件
:Graphviz png

:Graphviz! 会在目标文件不存在的情况下,尝试调用 :GraphvizCompile 进行编译然后再打开,相当于 :GraphvizCompile | Graphviz

:GraphvizCompile 用于编译当前文件,可以指定编译程序和扩展名,默认是 dot pdf

" :GraphvizCompile [exe] [format]

" 默认是用 dot 编译成 pdf
" :GraphvizCompile dot pdf
:GraphvizCompile

" 指定编译成 png 格式
:GraphvizCompile png

" 指定用 dot 编译成 gif 格式,实际上我没用过除 dot 的其他编译项:(
:GraphvizCompile dot gif

其他一些可选配置项:

" 指定打开文件的命令。默认会根据平台自动选择
" macOS 使用 open, Linux 使用 xdg-open 等
let g:graphviz_viewer = 'open'

" 默认编译生成 pdf 格式,如果想要其他格式,将 pdf 换成其他格式即可
let g:graphviz_output_format = 'pdf'

我基本只用 macOS, 所以 Windows 或者 Linux 没怎么测试过,如果遇到问题,可以到 graphviz.vim 提 issue,我会尽量解决 :(。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章:编译和安装SCons第二章:简单编译第三章:编译相关的一些事情第四章:编译和链接库文件第五章:节点对象第六...
    仙灵儿阅读 11,989评论 0 3
  • 这篇文章是手册的中文译版整理而来(英文看着太慢了,感谢前人铺路Orz...),vim的markdown插件和实时预...
    Himryang阅读 7,118评论 0 20
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,912评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,808评论 0 10
  • 作为漫威的收官之作,《复仇者联盟3无限战争》无疑是部史诗级电影。 史无前例的英雄阵容,最强反派灭霸的登场,...
    枫小茗阅读 412评论 3 3