anchor.diff:                  d1 * 10 + d2, c::t
               | c :: OneToNine d :: t ->
                   d, c::t
  -            // 2dw
  +            // 2dw -> 2, dw
               | OneToNine d1 :: Digit d2 :: Digit d3 :: Digit d4 :: t ->
                   d1 * 1000 + d2 * 100 + d3 * 10 + d4, t
               | OneToNine d1 :: Digit d2 :: Digit d3 :: t ->
  
positive.code:         let keyList = state.keys
          let multiplier, keyList =
              match keyList with
              // d2w
              | c :: OneToNine d1 :: Digit d2 :: Digit d3 :: Digit d4 :: t ->
                  d1 * 1000 + d2 * 100 + d3 * 10 + d4, c::t
              | c :: OneToNine d1 :: Digit d2 :: Digit d3 :: t ->
  
negative.code:             | NormalMode, [ ModeChange mode ] -> [ run (SwitchMode mode) Nothing ]
              | NormalMode, [ "a" ] -> [ run Move Right; run (SwitchMode InsertMode) Nothing ]
              | NormalMode, [ "A" ] -> [ run Move EndOfLine; run (SwitchMode InsertMode) Nothing ]
              | NormalMode, [ "O" ] -> [ run (InsertLine After) Nothing; run (SwitchMode InsertMode) Nothing ]
              | NormalMode, [ "o" ] -> [ run (InsertLine Before) Nothing; run (SwitchMode InsertMode) Nothing ]
              | NormalMode, [ Action action ] -> wait
              | NormalMode, [ "g"; "g" ] -> [ run Move StartOfDocument ]
              | NormalMode, [ "." ] -> [ run RepeatLastAction Nothing ]
  