我正在研究一个冗长而复杂的架构图。文档缩进混合了制表符,空格和缩进级别,这让我发疯。
是否有一种在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))
答案 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)。