48c5cc292f99

Local abbreviations.
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Sat, 08 Oct 2011 00:51:14 -0400
parents 74a20f78f27f
children 9a45509b6713
branches/tags (none)
files chapters/13.markdown outline.org

Changes

--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/chapters/13.markdown	Sat Oct 08 00:51:14 2011 -0400
@@ -0,0 +1,50 @@
+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:
+
+    :iabbrev <buffer> --- &mdash;
+
+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.
+
+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:
+
+    :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 thinks like `&ldquo;` and `&rdquo;`
+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.
+
--- a/outline.org	Sat Oct 08 00:29:38 2011 -0400
+++ b/outline.org	Sat Oct 08 00:51:14 2011 -0400
@@ -9,11 +9,9 @@
 ** abbreviations
 ** more about mappings
 ** training with <nop>
+** buffer-local mappings and options
 ** autocommands
-** buffer-specific mappings
-** buffer-specific abbreviations
-** buffer-specific settings
-** filetype autocommands
+** buffer-local abbreviations
 ** augroups
 ** wrapping up mapping
 *** Mapping options