Display 2d array as ASCII table
vim, 139 138 134

$x0xqq%ls&lt;cr&gt;&lt;esc&gt;@qq@q:se nosol|%s/,/\t/g|%s/]/\t./|%!column -t -s'&lt;C-v&gt;&lt;Tab&gt;'&lt;cr&gt;qwf";;h&lt;C-v&gt;GI|&lt;esc&gt;@wq@wll&lt;C-v&gt;Gls|&lt;esc&gt;0&lt;C-v&gt;Gs| &lt;esc&gt;:%s/"//g&lt;cr&gt;Yp:s/[^|]/-/g|s/|/+/g&lt;cr&gt;YggpkP


Accepts input in the form shown in the test cases. May or may not be valid, as this relies on the input string never containing any ", ,, ], or | characters.

If the input has to be able to contain ]s, then :%s/]/\t./&lt;cr&gt; can be replaced with qe$s&lt;Tab&gt;.&lt;esc&gt;j@eq@e for 2 extra chars. There is no easy way to allow ",| in the input.

Must be run in a Unix environment, as it relies on the column command line tool.

Slightly outdated explanation (by one revision, but that was just a bit of rearranging):

:se nosol&lt;cr&gt;    we need this later: G in visual block shouldn't go to BOL
$x0x             delete the surrounding pair of brackets
qq               record a macro
 %ls&lt;cr&gt;&lt;esc&gt;    put each element of the big array on its own line
 @qq             recurse
@q               play back the macro until EOF
:%s/,/\t/g&lt;cr&gt;   replace all remaining commas with tabs
:%s/]/\t./&lt;cr&gt;   replace the ] at the end of lines with tabs and a dot
                 we need this for the line at the right edge of the table
:%!column -t     run the whole file through `column' on tabs
 -s'&lt;C-v&gt;&lt;Tab&gt;
 '&lt;cr&gt;
qw               record another macro
 f";;            go forward 3 "s--that is, to the next "column"
 h               go back to the middle of the column
 &lt;C-v&gt;GI|&lt;esc&gt;   insert a line behind the cursor from top to bottom
 @wq             recurse
@w               play back until EOF
ll               move right before the line of dots we added earlier
&lt;C-v&gt;Gl          select the dots
s|&lt;esc&gt;          replace with a line (top to bottom)
0&lt;C-v&gt;G          select all the opening brackets
s| &lt;esc&gt;         again, (the leftmost) line
:%s/"//g&lt;cr&gt;     kill all the quotes around the data
Yp               duplicate bottom line
:s/[^|]/-/g&lt;cr&gt;  replace everything that's not a line with a dash
:s/|/+/g&lt;cr&gt;     now replace the lines with plus signs
YggpkP           put the separators before and after the first line


Thanks smpl for a byte!