# HG changeset patch # User Steve Losh # Date 1318038467 14400 # Node ID b63f0efbd25a573768fe6ea0e1f390767f2dfb57 # Parent 5b8c0b46ef78ba16fec77687d521b29990bd94a6 Abbreviations diff -r 5b8c0b46ef78 -r b63f0efbd25a chapters/07.markdown --- a/chapters/07.markdown Fri Oct 07 20:27:46 2011 -0400 +++ b/chapters/07.markdown Fri Oct 07 21:47:47 2011 -0400 @@ -22,16 +22,16 @@ Lets add a mapping that will open our `~/.vimrc` file in a split so we can edit it and get back to coding. Run this command: - :nnoremap ev v:edit $MYVIMRC + :nnoremap ev :vsplit $MYVIMRC I like to think of this command as "**e**dit my **v**imrc file". `$MYVIMRC` is a special Vim variable that points to your `~/.vimrc` file. Don't worry about that for right now, just trust me that that variable works. -Pressing `v` in Vim opens a new vertical split. If you'd prefer -a horizontal split replace the `v` with an `s`, but in this age of widescreen -monitors I don't know why you would. +`:vsplit` opens a new vertical split. If you'd prefer a horizontal split you +can replace it with `:split`, but in this age of widescreen monitors I don't +know why you would. Take a minute and think through that command in your mind. The goal is: "open my `~/.vimrc` file in a new split". Why does it work? Why is every single diff -r 5b8c0b46ef78 -r b63f0efbd25a chapters/08.markdown --- a/chapters/08.markdown Fri Oct 07 20:27:46 2011 -0400 +++ b/chapters/08.markdown Fri Oct 07 21:47:47 2011 -0400 @@ -0,0 +1,120 @@ +Abbreviations +============= + +Vim has a feature called "abbreviations" that feel similar to mappings but are +meant for use in insert, replace, and command modes. They're extremely flexible +and powerful, but we're just going to cover the most common uses here. + +We're only going to worry about insert mode abbreviations in this book. Run the +following command: + + :iabbrev adn and + +Now enter insert mode and type: + + One adn two. + +As soon as you hit space after typing the "adn" Vim will replace it with "and". + +Correcting typos like this is a great use for abbreviations. Run these +commands: + + :iabbrev waht what + :iabbrev tehn then + +Now enter insert mode again and type: + + Well, I don't know waht we should do tehn. + +Notice how *both* abbreviations were substituted, even though you didn't type +a space after the second one. + +Keyword Characters +------------------ + +Vim will substitute an abbreviation when you type any "non-keyword character" +after an abbreviation. "Non-keyword character" means any character not in the +`iskeyword` option. Run this command: + + :set iskeyword? + +You should see something like `iskeyword=@,48-57,_,192-255`. This format is +very complicated, but in essence it means that all of the following are +considered "keyword characters": + +* The underscore character (`_`). +* All alphabetic ASCII characters, both upper and lower case, and their accented + versions. +* Any characters with an ASCII value between 48 and 57 (the digits zero through + nine). +* Any characters with an ASCII value between 192 and 255 (some special ASCII + characters). + +If you want to read the *full* description of this option's format you can check +out `:help isfname`, but I'll warn you that you'd better have a beer at the +ready if you don't want to start sobbing while reading. + +For our purposes you can simply remember that abbreviations will be expanded +when you type anything that's not a letter, number, or underscore. + +More Abbreviations +------------------ + +Abbreviations are useful for more than just correcting typos. Let's add a few +more that can help in day-to-day text editing. Run the following commands: + + :iabbrev @@ steve@stevelosh.com + :iabbrev ccopy Copyright 2011 Steve Losh, all rights reserved. + +Feel free to replace my name and email address with your own, then enter insert +mode and try them out. + +These abbreviations take large chunks of text that you type often and compress +them down to a few characters. Over time, this can save you a lot of time, as +well as wear and tear on your fingers. + +Why Not Use Mappings? +--------------------- + +If you're thinking that abbreviations seem similar to mappings, you're right. +However, they're intended to be used for different things. Let's look at an +example. + +Run this command: + + :inoremap ssig --Steve Loshsteve@stevelosh.com + +This is a *mapping* intended to let you insert your signature quickly. Try it +out by entering insert mode and typing `ssig`. + +It seems to work great, but there's a problem. Try entering insert mode and +typing this text: + + Larry Lessig wrote the book "Remix". + +You'll notice that Vim has expanded the `ssig` in Larry's name! Mappings don't +take into account what characters come before or after the map -- they only look +at the specific sequence that you map. + +Remove the mapping and replace it with an abbreviation by running the following +commands: + + :iunmap ssig + :iabbrev ssig --Steve Loshsteve@stevelosh.com + +Now try out the abbreviation again. + +This time Vim will pay attention to the characters before and after `ssig` and +only expand it when we want it to. + +Exercises +--------- + +Add abbreviations for some common typos you know you personally make to your +`~/.vimrc` file. Be sure to use the mappings you created in the last chapter to +open and source the file! + +Add abbreviations for your own email address, website, and signature as well. + +Think of some pieces of text you type very often and add abbreviations for them +too. diff -r 5b8c0b46ef78 -r b63f0efbd25a introduction.markdown --- a/introduction.markdown Fri Oct 07 20:27:46 2011 -0400 +++ b/introduction.markdown Fri Oct 07 21:47:47 2011 -0400 @@ -17,9 +17,10 @@ can redistribute it as long as you don't make any changes and don't charge for it. -The source code to the book is available [on BitBucket][hg] and [on GitHub][git] -If you find any mistakes or feel you could improve it feel free to send a pull -request. +The source code to the book is available [on BitBucket][hg] and [on +GitHub][git]. If you find any mistakes or feel you could improve it feel free +to send a pull request, but I'm retaining the copyright on the book for now, so +if you're not comfortable with that I understand. [book]: / [hg]: http://bitbucket.org/sjl/learnvimscriptthehardway/ diff -r 5b8c0b46ef78 -r b63f0efbd25a outline.org --- a/outline.org Fri Oct 07 20:27:46 2011 -0400 +++ b/outline.org Fri Oct 07 21:47:47 2011 -0400 @@ -6,18 +6,26 @@ ** strict mapping ** leaders ** editing .vimrc faster +** abbreviations +** eating characters +** more about mappings ** autocommands ** augroups -** status lines -** abbreviations -** buffer-specific mapping -** other mapping options -*** -***