我正在绘制一个长而复杂的架构图。文档缩进混合了制表符、空格和缩进级别,这让我抓狂。
在Linux环境中,有一种简单的方法可以自动缩进.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))发布于 2014-01-07 00:04:39
Vim有点语法知识的开箱,似乎重新缩进点文件为我。
我删除了所有的缩进,转到文件的顶部,然后做=G
您的全局选项卡相关值决定是否使用制表符/空格,多少,等等。
如果需要,可以使用以下内容创建脚本:
> vim -W reIndentAndSave whatever.dot编辑你的点文件,从顶部重新缩进
gg=G...Save
:x然后,对于您想要通过刚才录制的脚本重新缩进的每个文件,
> vim -s reIndentAndSave somegraph.dot发布于 2015-10-02 15:05:25
在emacs上,如果缓冲区具有支持缩进的模式,则可以重新设置整个缓冲区,如:C-x h,以选择所有缓冲区,然后选择indent-region。
它是互动的,不是脚本的,但它有效。
如果你的emacs有graphviz-dot-mode,你可以试一试。
然而,我对这种特殊模式的结果并不完全满意,因为它往往无法使大括号与打开大括号对齐(至少graphviz-dot-mode.el版本0.3.6日期为19/02/2011)。
https://stackoverflow.com/questions/20946940
复制相似问题