f09f87e10570

Proof 19-26.
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Wed, 03 Apr 2013 21:53:35 -0400
parents 4fa876d7523c
children 8a753b8685fa
branches/tags (none)
files chapters/19.markdown chapters/20.markdown chapters/21.markdown chapters/22.markdown chapters/23.markdown chapters/24.markdown chapters/25.markdown chapters/26.markdown

Changes

--- a/chapters/19.markdown	Wed Apr 03 21:40:17 2013 -0400
+++ b/chapters/19.markdown	Wed Apr 03 21:53:35 2013 -0400
@@ -14,14 +14,14 @@
     :let foo = "bar"
     :echo foo
 
-Vim will display "bar".  `foo` is now a variable, and we've assigned it
-a string: "bar".  Now run these commands:
+Vim will display `bar`.  `foo` is now a variable, and we've assigned it
+a string: `"bar"`.  Now run these commands:
 
     :::vim
     :let foo = 42
     :echo foo
 
-Vim will display "42", because we've reassigned `foo` to the integer "42".
+Vim will display `42`, because we've reassigned `foo` to the integer `42`.
 
 From these short examples it may seem like Vimscript is dynamically typed.
 That's not the case, but we'll talk more about that later.
@@ -36,7 +36,7 @@
     :set textwidth=80
     :echo &textwidth
 
-Vim will display "80".  Using an ampersand in front of a name tells Vim that
+Vim will display `80`.  Using an ampersand in front of a name tells Vim that
 you're referring to the option, not a variable that happens to have the same
 name.
 
@@ -46,13 +46,13 @@
     :set nowrap
     :echo &wrap
 
-Vim displays "0".  Now try these commands:
+Vim displays `0`.  Now try these commands:
 
     :::vim
     :set wrap
     :echo &wrap
 
-This time Vim displays "1".  This is a very strong hint that Vim treats the
+This time Vim displays `1`.  This is a very strong hint that Vim treats the
 integer `0` as "false" and the integer `1` as "true".  It would be reasonable to
 assume that Vim treats *any* non-zero integer as "truthy", and this is indeed
 the case.
@@ -64,7 +64,7 @@
     :let &textwidth = 100
     :set textwidth?
 
-Vim will display "textwidth=100".
+Vim will display `textwidth=100`.
 
 Why would we want to do this when we could just use `set`? Run the following
 commands:
@@ -73,7 +73,7 @@
     :let &textwidth = &textwidth + 10
     :set textwidth?
 
-This time Vim displays "textwidth=110".  When you set an option using `set` you
+This time Vim displays `textwidth=110`.  When you set an option using `set` you
 can only set it to a single literal value.  When you use `let` and set it as
 a variable you can use the full power of Vimscript to determine the value.
 
@@ -105,14 +105,14 @@
 
 Now put your cursor somewhere in your text and type `"ap`.  This command tells
 Vim to "paste the contents of register `a` here".  We just set the contents of
-that register, so Vim pastes "hello!" into your text.
+that register, so Vim pastes `hello!` into your text.
 
 Registers can also be read.  Run the following command:
 
     :::vim
     :echo @a
 
-Vim will echo "hello!".
+Vim will echo `hello!`.
 
 Select a word in your file and yank it with `y`, then run this command:
 
--- a/chapters/20.markdown	Wed Apr 03 21:40:17 2013 -0400
+++ b/chapters/20.markdown	Wed Apr 03 21:53:35 2013 -0400
@@ -12,7 +12,7 @@
     :let b:hello = "world"
     :echo b:hello
 
-As expected, Vim displays "world".  Now switch to the other buffer and run the
+As expected, Vim displays `world`.  Now switch to the other buffer and run the
 `echo` command again:
 
     :::vim
--- a/chapters/21.markdown	Wed Apr 03 21:40:17 2013 -0400
+++ b/chapters/21.markdown	Wed Apr 03 21:53:35 2013 -0400
@@ -45,7 +45,7 @@
     :    echom "ONE"
     :endif
 
-Vim will display "ONE", because the integer `1` is "truthy".  Now try these
+Vim will display `ONE`, because the integer `1` is "truthy".  Now try these
 commands:
 
     :::vim
@@ -53,7 +53,7 @@
     :    echom "ZERO"
     :endif
 
-Vim will *not* display "ZERO" because the integer `0` is "falsy".  Let's see how
+Vim will *not* display `ZERO` because the integer `0` is "falsy".  Let's see how
 strings behave.  Run these commands:
 
     :::vim
@@ -80,8 +80,8 @@
     :echom "10hello" + 10
     :echom "hello10" + 10
 
-The first command causes Vim to echo "10", the second command echoes "20", and
-the third echoes "10" again!
+The first command causes Vim to echo `10`, the second command echoes `20`, and
+the third echoes `10` again!
 
 After observing all of these commands we can draw a few informed conclusions
 about Vimscript:
@@ -109,7 +109,7 @@
     :    echom "finally!"
     :endif
 
-Vim echoes "finally!" because both of the previous conditions evaluate to zero,
+Vim echoes `finally!` because both of the previous conditions evaluate to zero,
 which is falsy.
 
 Exercises
--- a/chapters/22.markdown	Wed Apr 03 21:40:17 2013 -0400
+++ b/chapters/22.markdown	Wed Apr 03 21:53:35 2013 -0400
@@ -12,7 +12,7 @@
     :    echom "foo"
     :endif
 
-Vim will, of course, display "foo".  Now run these commands:
+Vim will, of course, display `foo`.  Now run these commands:
 
     :::vim
     :if 10 > 2001
@@ -29,7 +29,7 @@
     :    echom "second"
     :endif
 
-Vim displays "second".  Nothing surprising here.  Let's try comparing strings.
+Vim displays `second`.  Nothing surprising here.  Let's try comparing strings.
 Run these commands:
 
     :::vim
@@ -39,7 +39,7 @@
     :    echom "two"
     :endif
 
-Vim echoes "two".  There's still nothing surprising, so what was I going on
+Vim echoes `two`.  There's still nothing surprising, so what was I going on
 about at the beginning of the chapter?
 
 Case Sensitivity
@@ -97,7 +97,7 @@
     :    echom "second"
     :endif
 
-Vim displays "first" because `==?` is the "case-insensitive no matter what the
+Vim displays `first` because `==?` is the "case-insensitive no matter what the
 user has set" comparison operator.  Now run the following commands:
 
     :::vim
@@ -108,7 +108,7 @@
     :    echom "two"
     :endif
 
-Vim displays "two" because `==#` is the "case-sensitive no matter what the user
+Vim displays `two` because `==#` is the "case-sensitive no matter what the user
 has set" comparison operator.
 
 The moral of this story is that you should *always* use explicit case sensitive
--- a/chapters/23.markdown	Wed Apr 03 21:40:17 2013 -0400
+++ b/chapters/23.markdown	Wed Apr 03 21:53:35 2013 -0400
@@ -31,7 +31,7 @@
     :::vim
     :call Meow()
 
-Vim will display "Meow!" as expected.
+Vim will display `Meow!` as expected.
 
 Let's try returning a value.  Run the following commands:
 
@@ -46,7 +46,7 @@
     :echom GetMeow()
 
 Vim will call the function and give the result to `echom`, which will display
-"Meow String!".
+`Meow String!`.
 
 Calling Functions
 -----------------
@@ -61,7 +61,7 @@
     :call Meow()
     :call GetMeow()
 
-The first will display "Meow!" but the second doesn't display anything. The
+The first will display `Meow!` but the second doesn't display anything. The
 return value is thrown away when you use `call`, so this is only useful when the
 function has side effects.
 
@@ -81,7 +81,7 @@
     :::vim
     :echom Meow()
 
-This will display two lines: "Meow!" and "0".  The first obviously comes from
+This will display two lines: `Meow!` and `0`.  The first obviously comes from
 the `echom` inside of `Meow`.  The second shows us that if a Vimscript function
 doesn't return a value, it implicitly returns `0`.  Let's use this to our
 advantage.  Run the following commands:
--- a/chapters/24.markdown	Wed Apr 03 21:40:17 2013 -0400
+++ b/chapters/24.markdown	Wed Apr 03 21:53:35 2013 -0400
@@ -14,7 +14,7 @@
     :::vim
     :call DisplayName("Your Name")
 
-Vim will display two lines: "Hello!  My name is:" and "Your Name".
+Vim will display two lines: `Hello!  My name is:` and `Your Name`.
 
 Notice the `a:` in the name of the variable that we passed to the `echom`
 command.  This represents a variable scope, which we talked about in an earlier
@@ -56,12 +56,12 @@
 The `...` in the function definition tells Vim that this function can take any
 number of arguments.  This is like a `*args` argument in a Python function.
 
-The first line of the function echoes the message `a:0` and displays "2".  When
+The first line of the function echoes the message `a:0` and displays `2`.  When
 you define a function that takes a variable number of arguments in Vim, `a:0`
 will be set to the number of extra arguments you were given.  In this case we
-passed two arguments to `Varg` so Vim displayed "2".
+passed two arguments to `Varg` so Vim displayed `2`.
 
-The second line echoes `a:1` which displays "a".  You can use `a:1`, `a:2`, etc
+The second line echoes `a:1` which displays `a`.  You can use `a:1`, `a:2`, etc
 to refer to each extra argument your function receives.  If we had used `a:2`
 Vim would have displayed "b".
 
@@ -83,7 +83,7 @@
 
     :call Varg2("a", "b", "c")
 
-We can see that Vim puts "a" into the named argument `a:foo`, and the rest are
+We can see that Vim puts `"a"` into the named argument `a:foo`, and the rest are
 put into the list of varargs.
 
 Assignment
@@ -111,7 +111,7 @@
 
     :call AssignGood("test")
 
-This time the function works, and Vim displays "Yep".
+This time the function works, and Vim displays `Yep`.
 
 Exercises
 ---------
--- a/chapters/25.markdown	Wed Apr 03 21:40:17 2013 -0400
+++ b/chapters/25.markdown	Wed Apr 03 21:53:35 2013 -0400
@@ -15,12 +15,12 @@
     :::vim
     :echom 100
 
-No surprises here -- Vim displays "100".  Now run this command:
+No surprises here -- Vim displays `100`.  Now run this command:
 
     :::vim
     :echom 0xff
 
-This time Vim displays "255".  You can specify numbers in hex notation by
+This time Vim displays `255`.  You can specify numbers in hex notation by
 prefixing them with `0x` or `0X`.  Now run this command:
 
     :::vim
@@ -33,8 +33,8 @@
     :echom 017
     :echom 019
 
-Vim will print "15" for the first command, because "17" in octal is equal to
-"15" in decimal.  For the second command Vim treats it as a decimal number, even
+Vim will print `15` for the first command, because `17` in octal is equal to
+`15` in decimal.  For the second command Vim treats it as a decimal number, even
 though it starts with a `0`, because it's not a valid octal number.
 
 Because Vim silently does the wrong thing in this case, I'd recommend avoiding
@@ -51,24 +51,24 @@
 Notice that we're using `echo` here and not `echom` like we usually to.  We'll
 talk about why in a moment.
 
-Vim displays "100.1" as expected.  You can also use exponential notation.  Run
+Vim displays `100.1` as expected.  You can also use exponential notation.  Run
 this command:
 
     :::vim
     :echo 5.45e+3
 
-Vim displays "5450.0".  A negative exponent can also be used.  Run this command:
+Vim displays `5450.0`.  A negative exponent can also be used.  Run this command:
 
     :::vim
     :echo 15.45e-2
 
-Vim displays "0.1545".  The `+` or `-` before the power of ten is optional. If
+Vim displays `0.1545`.  The `+` or `-` before the power of ten is optional. If
 it's omitted then it's assumed to be positive.  Run the following command:
 
     :::vim
     :echo 15.3e9
 
-Vim will display "1.53e10", which is equivalent.  The decimal point and number
+Vim will display `1.53e10`, which is equivalent.  The decimal point and number
 after it are *not* optional.  Run the following command and see that it crashes:
 
     :::vim
@@ -84,7 +84,7 @@
     :::vim
     :echo 2 * 2.0
 
-Vim displays "4.0".
+Vim displays `4.0`.
 
 Division
 --------
@@ -94,14 +94,14 @@
     :::vim
     :echo 3 / 2
 
-Vim displays "1".  If you want Vim to perform floating point division one of the
+Vim displays `1`.  If you want Vim to perform floating point division one of the
 numbers needs to be a Float, which will cause the other one to be coerced to
 a Float as well.  Run this command:
 
     :::vim
     :echo 3 / 2.0
 
-Vim displays "1.5".  The "3" is coerced to a Float, and then normal floating
+Vim displays `1.5`.  The `3` is coerced to a Float, and then normal floating
 point division is performed.
 
 Exercises
--- a/chapters/26.markdown	Wed Apr 03 21:40:17 2013 -0400
+++ b/chapters/26.markdown	Wed Apr 03 21:53:35 2013 -0400
@@ -9,7 +9,7 @@
     :::vim
     :echom "Hello"
 
-Vim will echo "Hello".  So far, so good.
+Vim will echo `Hello`.  So far, so good.
 
 Concatenation
 -------------
@@ -20,7 +20,7 @@
     :::vim
     :echom "Hello, " + "world"
 
-What happened?  Vim displayed "0" for some reason!
+What happened?  Vim displayed `0` for some reason!
 
 Here's the issue: Vim's `+` operator is *only* for Numbers.  When you pass
 a string to `+` Vim will try to coerce it to a Number before performing the
@@ -29,8 +29,8 @@
     :::vim
     :echom "3 mice" + "2 cats"
 
-This time Vim displays "5", because the strings are coerced to the numbers "3"
-and "2" respectively.
+This time Vim displays `5`, because the strings are coerced to the numbers `3`
+and `2` respectively.
 
 When I said "Number" I really *meant* Number.  Vim will *not* coerce strings to
 Floats!  Try this command to see prove this:
@@ -38,8 +38,8 @@
     :::vim
     :echom 10 + "10.10"
 
-Vim displays "20" because it dropped everything after the decimal point when
-coercing "10.10" to a Number.
+Vim displays `20` because it dropped everything after the decimal point when
+coercing `10.10` to a Number.
 
 To combine strings you need to use the concatenation operator.  Run the
 following command:
@@ -47,7 +47,7 @@
     :::vim
     :echom "Hello, " . "world"
 
-This time Vim displays "Hello, world".  `.` is the "concatenate strings"
+This time Vim displays `Hello, world`.  `.` is the "concatenate strings"
 operator in Vim, which lets you combine strings.  It doesn't add whitespace or
 anything else in between.
 
@@ -56,7 +56,7 @@
     :::vim
     :echom 10 . "foo"
 
-Vim will display "10foo".  First it coerces `10` to a String, then it
+Vim will display `10foo`.  First it coerces `10` to a String, then it
 concatenates it with the string on the right hand side.  Things get a bit
 stickier when we're working with Floats, though.  Run this command:
 
@@ -99,13 +99,13 @@
     :::vim
     :echo "foo\nbar"
 
-This time Vim will display two lines, "foo" and "bar", because the `\n` is
+This time Vim will display two lines, `foo` and `bar`, because the `\n` is
 replaced with a newline.  Now try running this command:
 
     :::vim
     :echom "foo\nbar"
 
-Vim will display something like "foo^@bar".  When you use `echom` instead of
+Vim will display something like `foo^@bar`.  When you use `echom` instead of
 `echo` with a String Vim will echo the *exact* characters of the string, which
 sometimes means that it will show a different representation than plain old
 `echo`.  `^@` is Vim's way of saying "newline character".
@@ -145,7 +145,7 @@
     :  echo "no"
     :endif
 
-Vim will display "no".  If you're wondering why this happens you should reread
+Vim will display `no`.  If you're wondering why this happens you should reread
 the chapter on conditionals, because we talked about it there.
 
 Exercises