How to use templates in vim
For many kinds of files, when you create a new one from scratch, it would be handy to have part of the file created from a boilerplate template every time. For example, whenever I want to create a Perl file, it should start like this:
#!/usr/bin/perl use warnings; use strict; use 5.010; # vi:et:sw=4 ts=4 ft=perl
You can do this easily by putting this command in your .vimrc file:
au BufNewFile * silent! 0r ~/.vim/templates/%:e.tpl
What that’s saying is “Whenever vim opens a new, empty file, read in the contents of the file at ~/.vim/templates/%:e.tpl”, where %:e is the extension of the file you’re asking to open. So for an HTML standard file, I have this in ~/.vim/templates/html.tpl:
<!DOCTYPE html>
<html>
<head>
<title> </title>
</head>
<body>
</body>
</html>
<!--
vi: expandtab sw=4 ts=4 ft=html:
-->
The filename that it reads from is based on the extension of the file, not the filetype, so I have to have the same Perl template file in pm.tpl, pl.tpl and t.tpl, since all three are Perl extensions.
To find out more about how vim handles templates, see :help template.
I don’t know where I first discovered this technique, since I’ve had it in my .vimrc forever. Here’s another helpful summary: https://shapeshed.com/vim-templates/