I would like to save the output of `g/pattern1/,/pattern2/` to a file (for each match, a different file).

e.g.

```
def
.......
end

def
.......
end

```

you would end up with a file for each "def...end".

Tried using tempname() like so:

`g/pattern1/,/pattern2/exe 'w ' . tempname()` but this fails with no range allowed for `exe`

also tried

```
g/pattern1/,/pattern2/w `tempname()`
```

to get tempname() evaluated but this failed with a "too many filenames" error.

What am I missing? Can this be done by using global and other commands, or would you need vimscript to do it?