Markdown lists with vim

The other day I found myself copy-pasting some Google Docs texts into a new Jekyll website, and so I had to format quite a bunch of lists. After Google Docs, the reflex was to select the rows, and hit ⌘+Shift+8, so I thought: Hey why not make a key-mapping? 🤓

I’ve tried this kind of thing before and I new it’s hard to get the ⌘+Shift- key mappings, so I went with what I knew worked, so I decided on Alt-8 instead.

Here is what came out:

vnoremap <buffer> ¶ :s/^\s*/\0* /g\|:nohlsearch<CR>

So it’s a visual map: it’ll work on a selection of lines. I know some Vim veterans disregard visual mode as not hard-core enough, and recommend using text objects instead, but visual mode seems to work quite well for me so far. 😉

It’s a <buffer> mapping, so that it’s only set for the current buffer, and it can do something else in buffers of other types.

It’a noremap just to be safe: if any of the mapped key-strokes are mapped to something else by some other module, I don’t want them to interfere.

The thingy is what comes out when you type Alt-7 on a Mac. ¯_ツ_¯

Of course (!) one can’t figure out the bulleted lists without also thinking about the numbered ones, so I though Alt-8 would be a perfectly natural next step. 🙂

Here it comes:

vnoremap <buffer> • :s/^\s*/\00 /g\|:nohlsearch\|:normal gpo^g<CR>

Neat! 🤓

* * *

P.S.: As is often the case, writing this quick article exposed a glitch in the last key-binding, and a hole in my understanding of how this whole thing works: I thought I needed <C-U> at the beginning, and while checking again the docs I found I actually don’t. Cool! 🤓