在 vim 中绘制 uml 图与 dot 图的快捷键定义

PlantUML 定义了绘制 UML 图的语法, 可以通过纯文本的方式绘制 UML 图. graphviz
定义了绘制一般图形的语法, 可以通过纯文本的方式绘图. 实际上, PlantUML 依赖于
graphviz.

关于 PlantUML 详细情况, 参见 http://www.plantuml.com/.

关于 graphviz 详细情况, 参见 http://www.graphviz.org/.


在 vim 中通过写文本的方式绘制 uml 图和框图时, 可能需要随时查看当前图样的效果.
这可以通过 PlantUML 和 graphviz 的 vim 插件提供的 Ex 命令调用.
我更倾向于通过定义一个快捷键来调用那些 Ex 命令.

下面是定义绘制 UML 图的快捷键:

" vim: ft=vim

if exists("g:loaded_dzfplantuml_syntax")
    finish
endif

let g:loaded_dzfplantuml_syntax = 1

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 对 plantuml 文件绘制图片
function! UmlImageUpdate() abort
    " 先保存再执行命令
    let cmd = "w | !plantuml " . fnameescape(expand('%:t'))
    exec cmd
endfunction

" 对 plantuml 文件绘制图片, 并调用缺省的图片浏览器进行查看
function! UmlImageShow() abort
    let l:viewer='xdg-open'
    if has('mac')
        let l:viewer='open'
    endif

    call UmlImageUpdate()
    exec '!'.l:viewer.' '.expand('%:r').'.png'
endfunction

com! -nargs=0 UmlImageUpdate :call UmlImageUpdate()
com! -nargs=0 ViewUmlImage :call UmlImageShow()

nnoremap   pu :UmlImageUpdate
nnoremap   pv :ViewUmlImage

下面是定义绘制 dot 图的快捷键:

" vim: ft=vim

if exists("g:loaded_dzfwmgraphviz")
    finish
endif

let g:loaded_dzfwmgraphviz = 1

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 对 dot 文件绘制图片. wmgraphviz 插件的默认快捷方式为 ll
nnoremap   gu :GraphvizCompile

" 对 dot 文件绘制图片, 并调用缺省的图片浏览器进行查看
" wmgraphviz 插件的默认快捷方式为 lv
nnoremap   gv :GraphvizShow

" 设置 graphviz 输出图片格式
let g:WMGraphviz_output="png"

之后, 在 vim 写好 UML 绘制代码后, 按 pv 可以查看绘制样图,
若修改了代码后, 按 pu 来更新样图. 对于 dot 图, 按 gv
来查看样子图.

对于 pandoc 文档, pandoc-markdown 原生支持 PlantUML 语法和 graphviz 语法,
作为代码块插入绘制代码即可. 要更好的支持由代码生成的图片插入到目标文档中,
可能要编写 pandoc 过滤器. 关于 pandoc 过滤器, 可以参考我的另一篇 pandoc
中编写图片居中过滤器.

你可能感兴趣的:(vim,pandoc)