<p>As I develop more with vim, I find myself wanting to copy in blocks of useful code, similar to "templates" in Eclipse. </p>

<p>I was thinking of making a separate file for each code chunk and just reading them in with</p>

<pre><code>:r code-fornext
</code></pre>

<p>but that just seems kind of primitive. Googling around I find vim macros mentioned and something about "maps" but nothing that seems straightforward.</p>

<p>What I am looking for are e.g. something like Eclipse's "Templates" so I pop in a code chunk with the cursor sitting in the middle of it.
Or JEdit's "Macros" which I can record doing complicated deletes and renaming on one line, then I can play it again on 10 other lines so it does the same to them.</p>

<p>Does vim have anything like these two functionalities?</p>

To record macros in Vim, in the command mode, hit the
```
q
```
key and another key you want to assign the macro to. For quick throw away macros I usually just hit
```
qq
```
and assign the macro to the
```
q
```
key. Once you are in recording mode, run through your key strokes. When you are done make sure you are back in command mode and hit
```
q
```
again to stop recording. Then to replay the macro manually, you can type
```
@q
```
. To replay the previously run macro you can type
```
@@
```
or to run it 10 times you could type
```
10@q
```
or
```
20@q
```
, etc..
In summary:
```
```
+----------------------------------+-------------------------------------+
| start recording a macro          | qX (X = key to assign macro to)     |
+----------------------------------+-------------------------------------+
| stop recording a macro           | q                                   |  
+----------------------------------+-------------------------------------+
| playback macro                   | @X (X = key macro was assigned to)  |
+----------------------------------+-------------------------------------+
| replay previously played macro   | @@                                  |
+----------------------------------+-------------------------------------+
```
```
In regards to code chunks, I have found and started using a Vim plug-in called snipMate, which mimics TextMate's snippets feature. You can get the plug-in here:
http://www.vim.org/scripts/script.php?script_id=2540
And a short article on using snipMate (along with a short screencast showing it in use):
http://www.catonmat.net/blog/vim-plugins-snipmate-vim/
Hope you find this helpful!