Tạo và duy trì sơ đồ trong Vim


7

Đây là một sơ đồ dựa trên văn bản đơn giản mà tôi đã tạo trong Vim cho một bài đăng trên weblog:

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

Vấn đề là, nó có thể khá khó khăn; thay đổi một điều, và bạn cần thay đổi mọi thứ.

Có bất cứ điều gì tôi có thể làm để làm cho điều này dễ dàng hơn? Tôi không thực sự quan tâm đến bố cục trên của sơ đồ như vậy , miễn là nó có vẻ như sơ đồ. Lưu đồ cũng có thể nằm ngang theo như tôi nghĩ, mặc dù tôi thích chiều dọc như trên.

Câu trả lời:


14

Thay vì sử dụng vim để trực tiếp cố gắng thao tác nghệ thuật ASCII, tại sao không sử dụng vim để chỉnh sửa định dạng tệp xác định biểu đồ?

Các dot định dạng là một cách khá nhỏ gọn để biểu diễn đồ thị. Một xấp xỉ sơ bộ của biểu đồ bạn đã nêu trong ví dụ của bạn sẽ trông như thế này:

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

Sau đó, bạn có thể sử dụng mô đun Perl's Graph :: Easy để hiển thị biểu đồ thành nhiều định dạng đầu ra, bao gồm văn bản ASCII. Nó cũng có thể tạo các trang HTML, SVG, PNG, et cetera.

Cài đặt Perl nếu bạn không có nó, cài đặt Graph :: Easy ( cpanm Graph::Easy, xem tại đây để biết chi tiết). Điều này sẽ cung cấp cho bạn một graph-easycông cụ dòng lệnh. Tạo yourgraph.dothoặc bất cứ điều gì (vim đã có kiến ​​thức cú pháp về định dạng dấu chấm và cũng có các plugin liên quan ).

Chạy graph-easy --as ascii yourgraph.dot output.txtvà bạn sẽ nhận được một cái gì đó như thế này:

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

Nó không đẹp lắm, nhưng việc chỉnh sửa tệp chấm dễ dàng hơn nhiều so với thao tác trên tất cả nghệ thuật ASCII. Tôi thấy rằng bài viết này là một bài viết khá hay về xây dựng sơ đồ với định dạng dấu chấm.


-1

Bạn có thể thử plugin DrawIt .

DrawIt là một plugin cho phép người ta vẽ các đường trái, phải, lên, xuống và dọc theo cả hai góc. Tùy chọn người ta có thể "giới hạn" các dòng bằng đầu mũi tên. Người ta có thể thay đổi các ký tự ngang, dọc, nghiêng và chéo sang bất kỳ ký tự nào mình muốn.


Làm thế nào để tôi sử dụng điều này để tạo và duy trì sơ đồ?
Martin Tournoij 6/2/2015

Vì nó hướng đến việc vẽ nghệ thuật ASCII, nó có thể giảm bớt nỗi đau khi bạn phải tái cấu trúc. Nhưng @JoshPetrie có lẽ đúng khi sử dụng dấu chấm sẽ tốt hơn.
Quincy Bowers

2
Vui lòng đọc chính sách của chúng tôi về câu trả lời đề xuất plugin và thêm một số chi tiết. Một ví dụ cụ thể về cách định cấu hình plugin (nếu cần) và kích hoạt nó sẽ hữu ích.
200_success
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.