That last chapter was a monster, so let's tackle something easier. We've seen how to define buffer-local mappings and options, so let's apply the same idea to abbreviations.
Open your foo
and bar
files again, switch to foo
, and run the following
command:
:iabbrev <buffer> --- —
While still in foo
enter insert mode and type the following text:
Hello --- world.
Vim will replace the ---
for you. Now switch to bar
and try it. It should
be no surprise that it's not replaced, because we defined the abbreviation to be
local to the foo
buffer.
Let's pair up these buffer-local abbreviations with autocommands to set them to make ourselves a little "snippet" system.
Run the following commands:
:autocmd FileType python :iabbrev <buffer> iff if:<left>
:autocmd FileType javascript :iabbrev <buffer> iff if ()<left>
Open a Javascript file and try out the iff
abbreviation. Then open a Python
file and try it there too. Vim will perform the appropriate abbreviation
depending on the type of the current file.
Create a few more "snippet" abbreviations for some of the things you type often
in specific kinds of files. Some good candidates are return
for most
languages, function
for javascript, and things like “
and ”
for HTML files.
Add these snippets to your ~/.vimrc
file.
Remember: the best way to learn to use these new snippets is to disable the
old way of doing things. Running :iabbrev <buffer> return NOPENOPENOPE
will
force you to use your abbreviation instead. Add these "training" snippets to
match all the ones you created to save time.