Erstellen und Verwalten von Flussdiagrammen in Vim

7

Hier ist ein einfaches textbasiertes Flussdiagramm, das ich in Vim für einen Weblog-Beitrag erstellt habe:

               [DNS request]
                    |
                    |
                 [Adsuck]
                    |
                    |
                 <block?>
                    |
                   / \
                  /   \
              <YES>    \-> <NO> --> [unbound lookup]
                |
                v
            [noop.py]
                |
                |
        <Have noop script?>
                |
               / \
              /   \
           <YES>   \-> <NO> --> [serve empty GIF]
             |
             v
    [serve noop script]

Das Problem ist, dass es ziemlich mühsam sein kann; Ändern Sie eine Sache, und Sie müssen alles ändern.

Kann ich irgendetwas tun, um dies zu vereinfachen? Das obige Layout des Flussdiagramms als solches ist mir eigentlich egal , solange es wie ein Flussdiagramm aussieht, ist es in Ordnung. Flussdiagramme können für mich auch horizontal sein, obwohl ich wie oben vertikal bevorzuge.

Martin Tournoij
quelle

Antworten:

14

Verwenden Sie vim nicht, um direkt zu versuchen, ASCII-Grafiken zu manipulieren, sondern verwenden Sie vim, um ein Dateiformat zu bearbeiten, das ein Diagramm definiert.

Das Punktformat ist eine ziemlich kompakte Methode zur Darstellung von Diagrammen. Eine grobe Annäherung an das Diagramm, das Sie in Ihrem Beispiel skizziert haben, würde folgendermaßen aussehen:

digraph {
  start -> adsuck;
  adsuck -> block;
  block -> noop[label="yes"];
  block -> unbound[label="no"];
  noop -> serve_noop[label="yes"];
  noop -> serve_empty[label="no"];
}

Anschließend können Sie das Graph :: Easy- Modul von Perl verwenden , um das Diagramm in eine Vielzahl von Ausgabeformaten zu rendern, einschließlich ASCII-Text. Es können auch HTML-Seiten, SVG, PNG usw. erstellt werden.

Installieren Sie Perl , wenn Sie es nicht haben, installieren Sie Graph :: Easy ( cpanm Graph::Easysiehe hier für weitere Details). Dadurch erhalten Sie ein graph-easyBefehlszeilentool. Erstellen yourgraph.dotoder was auch immer (vim hat bereits Syntaxkenntnisse im Punktformat und es gibt auch verwandte Plugins ).

Lauf graph-easy --as ascii yourgraph.dot output.txtund du bekommst so etwas:

                      +-------------+
                      |    start    |
                      +-------------+
                        |
                        |
                        v
                      +-------------+
                      |   adsuck    |
                      +-------------+
                        |
                        |
                        v
+------------+  no    +-------------+
|  unbound   | <----- |    block    |
+------------+        +-------------+
                        |
                        | yes
                        v
+------------+  yes   +-------------+
| serve_noop | <----- |    noop     |
+------------+        +-------------+
                        |
                        | no
                        v
                      +-------------+
                      | serve_empty |
                      +-------------+

Es ist nicht ganz so hübsch, aber es ist viel einfacher, die Punktdatei zu bearbeiten, als die gesamte ASCII-Grafik zu bearbeiten. Ich fand, dass dieser Artikel eine ziemlich schöne Zusammenfassung über das Erstellen von Flussdiagrammen mit dem Punktformat war.


quelle
-1

Sie können das DrawIt- Plugin ausprobieren .

DrawIt ist ein Plugin, mit dem man Linien nach links, rechts, oben, unten und entlang beider Schrägen zeichnen kann. Optional kann man die Linien mit Pfeilspitzen "begrenzen". Man kann die horizontalen, vertikalen, schrägen und sich kreuzenden Zeichen in die gewünschten Zeichen ändern.

Quincy Bowers
quelle
Wie verwende ich dies, um Flussdiagramme zu erstellen und zu pflegen?
Martin Tournoij
Da es auf das Zeichnen von ASCII-Kunst ausgerichtet ist, kann es den Schmerz verringern, wenn Sie umgestalten müssen. Aber @JoshPetrie hat wahrscheinlich Recht, dass die Verwendung von Punkten besser wäre.
Quincy Bowers
2
Bitte lesen Sie unsere Richtlinien zu Antworten auf Plugin-Empfehlungen und fügen Sie einige Details hinzu. Ein spezielles Beispiel für die Konfiguration und Aktivierung des Plugins (falls erforderlich) wäre hilfreich.
200_erfolg