Draw ASCII with Vim

其實要繪製 ASCII Art 有很多種辦法,包括現在還有在線繪製,只要動動鼠標就可以畫的很好。但對於我這個骨灰級 Vim 使用者來講,當然要找找怎麼樣才能在 Vim 裡輸出 ASCII 的方法。

Graph::Easy

這是一個 Perl 依賴模塊,使用方法簡單,可以輸出多種圖片格式,支持 Dot 語言以及 Graphviz。

語法:

graph {
    label: TCP Three-way Handshack
}

[ Client ] -- SYN = 1 Seq = X --> [ Server ] 
[ Server ] .. SYN = 1 ACK = X + 1 Seq = Y ..> [ Client ]
[ Client ] == ACK = Y + 1 Seq = Z ==> [ Server ]

上面的語句經過渲染後將會得到 TCP 三次握手的示意圖:

              TCP Three-way Handshake

           ACK = Y + 1 Seq = Z
  #=========================================#
  H                                         v
+--------+  SYN = 1 Seq = X               +--------+
| Client | -----------------------------> | Server |
+--------+                                +--------+
  ^        SYN = 1 ACK = X + 1 Seq = Y      :
  ...........................................

常用命令

    graph-easy [options] [inputfile [outputfile]]

            echo "[ Bonn ] - car -> [ Berlin ]" | graph-easy    // 渲染命令
            graph-easy --input=graph.dot --as_ascii     // 將 Dot 文件渲染為 ASCII 輸出
            graph-easy --html --output=mygraph.html graph.txt       // 輸出 HTML 文件
            graph-easy graph.txt graph.svg      // 輸出 SVG 文件
            graph-easy graph.txt --as_dot | dot -Tpng -o graph.png      // 將文件轉化為 Dot 格式後使用 Dot 渲染為 png 圖片
            graph-easy graph.txt --png      // 渲染為 png 格式
            graph-easy graph.vcg --dot      
            graph-easy graph.dot --gdl      
            graph-easy graph.dot --graphml

參數

  • --input:指定輸入文件。eg. graph-easy --input=input.txt
  • --output:指定輸出文件。eg. graph-easy --output=output.txt input.txt
  • --as:指定輸出文件格式。
    eg. $ graph-easy --as=ascii input.txt
    $ graph-easy --ascii
  • --from:指定輸入文件格式。
    eg. $ graph-easy --from=dot input output.txt$ graph-easy --from_dot input output.txt

支持輸入格式

Graph::Easy 可以指定輸入文件格式,支持的格式有:

graphviz    the DOT language
                  txt         Graph::Easy text
                  vcg         VCG text
                  gdl         GDL (Graph Description Language) text

支持輸出格式

Graph::Easy 中輸出文件如不指定格式,則根據輸入文件的後綴確定,如無後綴,則默認輸出 ASCII 文件。

可以支持輸出的格式有:

    ascii       ASCII art rendering
    boxart      Unicode Boxart rendering
    html        HTML
    svg         Scalable Vector Graphics
    graphviz    the DOT language
    dot         alias for "graphviz"
    txt         Graph::Easy text
    vcg         VCG (Visualizing Compiler Graphs - a subset of GDL) text
     gdl         GDL (Graph Description Language) text
     graphml     GraphML

In addition, the following formats are understood and piped through the program specified with the --renderer option
              (default: dot):

    bmp         Windows bitmap
    gif         GIF 
    hpgl        HP-GL/2 vector graphic
    jpg         JPEG
    pcl         PCL printer language
    pdf         PDF
    png         PNG
    ps          Postscript 
    ps2         Postscript with PDF notations (see graphviz documentation)
                  tga         Targa bitmap
                  tif         TIFF bitmap

DrawIt

DrawIt 是一個 Vim 插件,可以直接在 Vim 中使用鍵盤操作進行繪製。

常用命令

以下所有命令必須在 Vim 命令模式下輸入。

\di         進入 DrawIt 模式
\ds         退出 DrawIt 模式

>           向右畫線
<           向左畫線
^           向上畫線
v           向下畫線

\v \> \^ \<     畫大箭頭

Ctrl + v        進入矩形選框狀態
\b              在選擇區域內畫矩形
\e              在選擇區域內畫橢圓
\f              填充區域

Space           擦除模式

OSI 模型

這是用 DrawIt 繪製的 OSI 模型。

            +--------------------------------+
            |       Application layer        |                                                                                         
            +--------------------------------+
            |       Presentation layer       |                                                                                          
            +--------------------------------+
            |         Session layer          |                                                                                       
            +--------------------------------+
            |        Transport layer         |                                                                                        
            +--------------------------------+
            |         Network layer          |                                                                                       
            +--------------------------------+
            |        Data Link layer         |                                                                                        
            +--------------------------------+
            |         Physical layer         |                                                                                        
            +--------------------------------+

results matching ""

    No results matching ""