Making ASCII Art in Vim

(alexyang.dev)

105 points | by evakhoury 2 days ago

8 comments

  • tromp 14 minutes 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...

  • tjoff 4 hours 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"
    • jrop 33 minutes ago
      Glad I'm not the only one who does this.
    • lachlan_gray 1 hour ago
      Ha! Never looked into :r, but I certainly will now
  • zahlman 4 hours 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).

  • ramses0 2 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 46 minutes 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 26 minutes 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 8 hours ago
      Love it, this was new to me
      • ramses0 2 hours 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 2 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!

  • qiine 6 hours 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!

  • lilerjee 6 hours ago
    It is convenient to draw flow chart or architecture of something using vim and just ASCII
  • newsomix9xl 2 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.