Settings

Theme

Making ASCII Art in Vim

alexyang.dev

118 points by evakhoury 10 days ago · 16 comments

Reader

tjoff 7 days ago

Neat. The quick and dirty way I use if I want to make something big and unmissable is to invoke figlet inside vim: ":r!figlet vim"

tromp 7 days ago

> When asked, "do you need any special programs or software to make ASCII Art?", the great ASCII artist Joan G. Stark said: "All you need is a text editor with a fixed-width font."

You can find her impressive ASCII art archived at

https://web.archive.org/web/20091028031724/http://www.geocit...

ramses0 9 days ago

Another slew of utility lies in `:help searchoffset`, often like the following: https://til.codeinthehole.com/posts/about-vims-semicolon-sea...

    /x/e-3
    /x/+1
    /x/;/yz
...it allows near arbitrary cursor placement (eg: this blog articles "squiggle" situation) to be able to find the beginning of the squiggle, or the end of the squiggle (or temporarily using "X" and "Z" for start/end, and "clearing" it with `V...:s/[XY]/./g`
  • sudobash1 7 days ago

    For the last example given in that article:

        /test_.*_errors/;/errors
    
    I find it much easier to use "\zs". That tells vim where you want the "start" of the match to be. Everything before the "\zs" is just treated like context:

        /test_.*_\zserrors
    
    It is also useful for ":s/match/sub"
    • ramses0 7 days ago

      Noice! :-D Never knew about that (even though it might be vim-specific), but yeah, so much easier than where I'll usually have to do some trial + error to get my cursor to land where I want it. (usually in a macro, or multi-`.` edit context).

  • JSR_FDED 7 days ago

    Love it, this was new to me

    • ramses0 7 days ago

      It's one of those things you'd _never_ stumble over naturally, but once you're aware of the concept, it makes a ton of sense and you can immediately think of tons of uses for it.

          /def new_.*(/s+8
          /2026-/e
          /except/+1;/raise
vitiral 10 days ago

Awesome! I added your blog to the docs for an ascii art color syntax I wrote for my vim-like editor, I'd love if you checked it out

https://civboot.github.io/lua/asciigame.html

Note: right now the editor crashes if you mis-type any of the syntax... it's not really fully launched, going to fix that soon hopefully but you can see a [screenshot](https://civboot.github.io/img/asciigame.png) of what it looks like

Also, if you know any other good references for getting into asciiart I'd love to reference them as well.

Note: the Ele editor isn't _quite_ ready for all the asciiart features in your blog post, notably virtualedit and macros are not implemented yet - but I just added basic visual mode so it's getting close!

zahlman 7 days ago

> It's also totally valid to not use this feature and just fill the buffer with spaces at the beginning of your session instead; just know that in Vim it's not absolutely necessary.

I actually set up a script to fill a temp file with a page worth of some "background" character and then open it with a special vimrc (mostly oriented around making it so that mouse drags use visual-block mode regardless of what mode I was in before).

qiine 7 days ago

Visual block mode and virtual edit are such killer features of vim.

I also like plugins like https://github.com/nvim-mini/mini.move That allows you to move selected characters around; it's super useful to correct mistakes or reorder things quickly, and it's also very intuitive to make ASCII art with it!

lee_ars 7 days ago

True terminal art connoisseurs are still using their registered copies of TheDraw from 1991:

https://en.wikipedia.org/wiki/TheDraw

newsomix9xl 10 days ago

I know that AI will never replace me until it can generate ASCII art. So far it seems to struggle so I sleep well at night.

jmercouris 7 days ago

You can use artist mode in Emacs as an equivalent. It's really great for box plots and diagrams.

lilerjee 7 days ago

It is convenient to draw flow chart or architecture of something using vim and just ASCII

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection