Update chapters/35.markdown
Note that you can’t use negative indices with strings, only slices with negative indices.
author |
ZyX-I <kp-pav@ya.ru> |
date |
Sun, 19 Aug 2012 12:57:07 +0400 |
parents |
a2fb13918fc6 |
children |
495eedad2b77 |
Buffer-Local Abbreviations
==========================
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:
:::vim
:iabbrev <buffer> --- —
While still in `foo` enter insert mode and type the following text:
:::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.
Autocommands and Abbreviations
------------------------------
Let's pair up these buffer-local abbreviations with autocommands to set them to
make ourselves a little "snippet" system.
Run the following commands:
:::vim
:autocmd FileType javascript :iabbrev <buffer> iff if ( ) {}<left><left><left><left><left>
:autocmd FileType python :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.
Exercises
---------
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.