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: 
Using `set nrformats+=alpha`:

```
ia<Esc>qqylp<C-a>q24@q

```

Step by step:

```
ia<Esc>      " Start with 'a'
qqylp<C-a>q  " @q will duplicate the last character and increment it
24@q         " Append c..z

```
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.