自动缩进graphviz .dot文件

时间:2014-01-06 09:38:32

标签: graphviz dot auto-indent

我正在研究一个冗长而复杂的架构图。文档缩进混合了制表符,空格和缩进级别,这让我发疯。

是否有一种在Linux环境中自动缩进graphviz .dot文件的简单方法?

纯粹的命令行工具是最好的,但是像vim这样的流行编辑器的插件也是一个很好的解决方案。

更新

vim缩进在边缘的节点名称中有:的错误。例如,server_a:event -> log_server;会导致下一行进一步缩进,可能是因为:被解析为块声明(请参阅Harry Pehkonen's answer上的注释)。引用节点名称(例如"server_a":event -> log_server;)可以解决此问题:

#!/usr/bin/python3

import re

dot=open('components.dot').read()
reg=re.compile("(\s)(\S+)(\:.*\-\>)")
print(reg.sub(r'\1"\2"\3', dot))

2 个答案:

答案 0 :(得分:2)

Vim具有开箱即用的点语法知识,似乎为我重新缩进了点文件。

我删除了所有缩进,转到文件顶部,然后执行= G

您的全局制表符相关值决定是使用制表符/空格,数量等等。

如果需要,可以使用以下命令创建脚本:

> vim -W reIndentAndSave whatever.dot

使用

从顶部重新缩进来编辑您的点文件
gg=G

...保存

:x

然后,对于要通过刚刚录制的脚本重新缩进的每个文件,

> vim -s reIndentAndSave somegraph.dot

答案 1 :(得分:1)

在emacs上,如果缓冲区具有支持缩进的模式,则可以重新加载整个缓冲区:C-x h以选择所有缓冲区,然后选择indent-region

它是交互式而非脚本化的,但它确实有效。

如果你的emacs有graphviz-dot-mode,你可以尝试一下。

然而,我对这种特定模式的结果并不完全满意,因为它往往不会使开口括号对齐闭合括号(至少graphviz-dot-mode.el版本0。0。6日期19/02/2011)。