Question: I sometimes need to write the whole alphabet `abcd…z` and I hate typing it letter by letter in Vim's insert mode. Does there exist any method to do this more efficiently?

I know about the `ga` command which gives me the ascii code of the character where the cursor is … but don't know anything about how to mix it with my standard solution to type numbers from 1 to (for example) 5000: `a1ESCqqyyp^Aq4998@q` …

Answer: 
How about this command:

```
:put =join(map(range(char2nr('a'),char2nr('z')),'nr2char(v:val)'),'')

```

Collect the ASCII values of the characters in the range from `a` to `z`, then map them over the `nr2char()` function and insert the result into the current buffer with `:put =`.

When you leave out the enclosing `join(` … `,'')` you get the characters on a separate line each.

See

* [`:h nr2char()`](http://vimdoc.sourceforge.net/htmldoc/eval.html#nr2char%28%29),
* [`:h char2nr()`](http://vimdoc.sourceforge.net/htmldoc/eval.html#char2nr%28%29),
* [`:h :put`](http://vimdoc.sourceforge.net/htmldoc/change.html#%3aput),
* and look up `range()`, `map()`, `join()` and friends in the [`list-functions`](http://vimdoc.sourceforge.net/htmldoc/usr_41.html#list-functions) table.
First, `set nrformats+=alpha`.

Then:

```
ia<ESC>Y25p<CTRL-V>}g<CTRL-A>k26gJ

```

Which means:

* `ia` insert the initial `a`
* `Y25p` yank the `a` and duplicate it on 25 lines
* `<CTRL-V>` go into visual block mode
* `}` go to the last character at the end of the current paragraph
* `g<CTRL-A>` incrementally increase each alphabetic character (see `help v_g_CTRL-A`)
* `k` go up one line
* `26gJ` join 26 lines without inserting or removing any spaces

Which leads to:

```
abcdefghijklmnopqrstuvwxyz

```