Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

UbuntuのVimでGraphvizをプレビューする

$
0
0

 VimでGraphvizのプレビューを行うにはwannesm氏のVim Plugin wmgraphviz.vimを使う方法がある。ここでは自分自身の防備録として、インストールから設定までをまとめる。

筆者の環境

  • Ubuntu 16.04 LTS
  • Vim version 8.0.946 (常に最新)
  • Graphviz version 2.38.0

Graphvizのインストール

 Ubuntu 16.04のパッケージリポジトリに、本記事執筆時で最新の(Version 2.38.0)Graphvizが収録されているのでそれをインストールする。

sudo apt install graphviz

wmgraphviz.vimのインストール

 wannesm氏のwmgraphviz.vimをインストールする。

 筆者はVim Pluginの管理にDeinを使っているのでwmgraphviz.vimのインストールには.vimrcに

call dein#add('wannesm/wmgraphviz.vim')

と書く。あとは

:call dein#install()

を実行すれば良い。

wmgraphviz.vimの設定

 wmgraphviz.vimの設定は簡単である。wmgraphviz.vimのリポジトリのREADME.mdの説明にある通り、.vimrcに

let g:WMGraphviz_dot = "dot"
let g:wmgraphviz_output = "pdf"
let g:WMGraphviz_viewer = "xdg-open"
let g:WMGraphviz_shelloptions = ""

と記入するが、上記のうちwmgraphviz_outputは自分がdotコマンドで出力したいフォーマットを指定する。例えばsvgで出力したいなら

let g:wmgraphviz_output = "svg"

とする。

wmgraphviz.vimの使い方

dotファイルのコンパイル

<LocalLeader>ll

を押す。キーボードのマッピングを変更していなければ、通常<LocalLeader>は\キーなのでそれを押す。コマンド

:GraphvizCompile

を実行するのでもよい。

dotファイルのプレビュー

<LocalLeader>lv

を押す。コマンド

:GraphvizShow

を実行するのでもよい。

 この場合、

dot -txlib hoge.dot

が実行され、dotコマンド自身でプレビューが表示される。コンパイル結果のファイルは生成されない。

dotファイルのコンパイルと結果の表示と編集

<LocalLeader>li

を押す。コマンド

:GraphvizInteractive

を実行するのでもよい。

 この場合、wmgraphviz_outputに設定した形式でコンパイル結果のファイルが生成され、xdg-openでそれに適したプログラムで表示される。

実行例


digraph sample {
  // 基本設定
  graph [rankdir=LR];
  node [shape=record, fontsize=7, width=2.0];
  edge [fontsize=7];

  // ノード
  hoge [label="[顧客マスタ]|{
                { 顧客 id\l| 顧客名\l| 住所\l}|
                {Int\l|VarChar[128]\l|VarChar[1024]\l}
              }"];
  piyo [label="[piyo]|{
                {id\l| 顧客 id\l|piyo1\l|piyo2\l}|
                {Int\l|Int\l|hoge1_type\l|hoge2_type\l}
              }"];

  // エッジ
  piyo -> hoge [label="顧客 id = 顧客 id"];
}

上記のファイルをhoge.dot開き

<LocalLeader>lv

を押すと

ER図

というような図がプレビューされる。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>