美文网首页MacOS, Java和IDEA
在MacOS下用Vim和Graphviz画流程图

在MacOS下用Vim和Graphviz画流程图

作者: SpaceCat | 来源:发表于2018-12-09 15:28 被阅读40次

    自从Evernote上线了markdown功能之后,就开始使用脚本画各种图,几乎是停不下来的节奏。但是,Evernote中的Markdown功能化时序图比较好看,流程图画出来的效果比较丑陋。
    所以,这里就找其他的脚本画图方案,比如,Graphviz、MetaPost和TikZ等。大概了解了下,后两种比较专业,学习曲线也比较陡峭。Graphviz比较好上手,这里大概做下介绍。

    1、环境准备

    这里是用MacOS命令行下的homebrew安装的,直接执行如下命令即可:

    brew install graphviz
    

    编辑器这里选的是MacVim,画图预览使用MacOS自带的预览应用。这里,需要在vimscript中增加如下配置:

    " map the function key to preview the dot file
    autocmd BufRead *.dot nmap <F8> :w<CR>:!dot -Tpng -o %<.png % && open /Applications/Preview.app %<.png<CR><CR>
    

    该命令的意思是,当打开.dot格式的文件时,自动执行一个按键映射,将F8键映射为执行dot -Tpng -o %<.png % && open /Applications/Preview.app %<.png。也就是,先进行格式转换,将.dot格式的文件转化为.png格式,然后,用系统自带的预览应用打开这个图片。这样,我们在编辑绘图脚本的过程中,保存之后,按F8键就可以实时查看绘图的效果了。

    2、画图的脚本语法

    这里的脚本语法和Evernote中自带的Markdown画图中流程图(采用一个Mermaid的前端库实现)的语法差不多。上手很容易,这里直接给出一个例子:

    digraph pic { 
      Start[shape=Mrecord, label="开始", color="green", fontcolor="green", height=0.1, width=0.6]
      End[shape=Mrecord, label="结束", color="green", fontcolor="green", height=0.1, width=0.6]
      JudgeFlag1[shape=diamond, label="XXXX?", color="green", fontcolor="green", width=0.1]
      CheckStatus[shape=diamond, label="CheckStatus", color="green", fontcolor="green", width=0.1]
      CommitOper2[shape=record,label="XX" style=filled, color="green"]
      CommitOper4[shape=box,label="XX", style=filled,color="1.0 0.3 1.0"]
      CommitOper3[shape=diamond,label="XX" style=filled]
      CommitOper[shape=record,label="XXXXX" style=filled, color="yellow"]
      End[shape=Mrecord, label="结束"]
      Edge[color="green"]
      Node[color="green"]
      Start -> JudgeFlag1
      JudgeFlag1 -> CommitOper[color="blue", label="Yes"]
      JudgeFlag1 -> CheckStatus[label="No"]
      CheckStatus -> CommitOper2[label="0"]
      CommitOper2 -> CommitOper4
      CheckStatus -> CommitOper4[label="1"]
      CommitOper4 -> CommitOper3
      CheckStatus -> CommitOper3[label="2"]
      CommitOper3 -> CommitOper[label="XXX", color="blue"]
      CommitOper3 -> End
      CommitOper -> End
    }
    

    最后,生成的效果图如下:


    Graphviz生成的流程图

    相关文章

      网友评论

        本文标题:在MacOS下用Vim和Graphviz画流程图

        本文链接:https://www.haomeiwen.com/subject/vxfkhqtx.html