/images/logo.png

Normal Mode

Rainbow Trails

I wrote a new plugin over Easter. It is called Rainbow Trails1 and it adds a touch of MAGIC to your motions. If your life could do with a spot of COLOUR, You should go install it now! I’m not good at naming things. Did I mention this very site was delayed for literal YEARS till I managed to come up with a good domain name?2 ↩︎ Of course, then two came along at once.

Macro Conditional

The Question After seeing the macro Game of Life, Benoit de Chezelles asked on Mastodon: I replied: But just because something isn’t practical, doesn’t mean it’s not possible, and so I decided to write this post to explain how you can write a macro that acts differently depending on whether anf,motion succeeds or fails. The Challenge Benoit politely declined to give me a real-life scenario where he needed this, so I whipped up the following CONTRIVED editing task.

Solving Advent of Code With Vim – Day 1, Part 2

I’ve never done Advent of Code before, and I wasn’t planning to do it this year1, but for some reason I decided to try my hand at solving the 2023 event’s Day 1’s challenges in Vim, using only its editing commands. (So ex commands are allowed, but Vimscript’s more programmerly constructs — functions, loops, conditionals, etc. — aren’t.) It was fun! So much fun, in fact, that I ended up carrying on and completing a bunch more of the challenges.

A Novel Sorting Technique

I have devised an entirely new method of sorting numbers. Quicker1 than quicksort, more EFFERVESCENT than bubblesort, I present to you: Vim Macro Sort Vim Macro Sort uses NO Vimscript, NO chicanery with control characters, and it NEVER leaves normal mode. It’s just a plain old ASCII text file with a bunch of editing commands in it. Try It Out! Start using this new sort macro TODAY! Download macrosort.txt, open with the command: vim --clean macrosort.

Bram Moolenaar 1961–2023

When I found out that Bram had died I posted a short thread on Mastodon, but I haven’t written anything here yet because I haven’t quite been able to work out why it hit me as hard as it did and what I wanted to say about it. Two months on, I still haven’t really figured it out, so I’ll just say that, by all accounts, Bram was an exceptionally generous person, and note that in the handful of extremely limited interactions I had with him I always came away feeling positive, which hasn’t always been my experience with other open source projects.

Enabling Dictionary Completion Everywhere

Vim’s insert mode completion has a very nice feature where you can start typing a natural language word and then press Ctrl-XCtrl-K to complete it. By default, it pulls the words used for the completions from the file specified with your 'dictionary' option, but this requires you to have such a file, which is not always1 the case for the computers I do my Vimmin’ on. But there is a backup!

Yet Another Inappropriate Use of Macros

Tim Chase posted a clever little :substitute command on Twitter: Had some regex with lots of repeated \d in them like \d\d\d\d Converted them all to \d{n} notation in vim using :%s!\%(\\d\)\{2,}!\='\d{'.(strlen(submatch(0))/2).'}'!g Just in case it's useful for anybody else. — Tim Chase (@gumnos) May 18, 2023 As always, my instinct was immediately to see if you can do it as a macro1. You can. Here’s how: qqqqq/\v(\\d)+\zs\\dEnterc2l{2}Esc@qq@qqq/\\d{\d}{2}EnterCtrl-All3x@qq@q (Yes, this is actually two recordings.

iVimClippy

Because vimclippy is a shell command, iVim users may fear they are OUT OF LUCK when it comes to FAST clipboard-editing, and that they are doomed to forever tapping out "*P…:%y* like NEANDERTHALS. But there is a way. Step 1: Create a User-Defined Command First we’re going to set up a :VimClippy Ex command to insert the current content of the clipboard into a buffer and set up the autocommand to write the edited text back into the clipboard when the buffer is saved.