anchor.diff:                  editor.LocationToOffset (new DocumentLocation(line, editor.Caret.Column))
               else
                   editor.Caret.Offset
  +        | EndOfLine ->
  +            let line = editor.GetLine editor.Caret.Line
  +            editor.Caret.Offset, line.EndOffset
  +        | StartOfLine ->
  +            let line = editor.GetLine editor.Caret.Line
  +            editor.Caret.Offset, line.Offset
  +        | FirstNonWhitespace ->
  +            let line = editor.GetLine editor.Caret.Line
  +            editor.Caret.Offset, line.Offset + editor.GetLineIndent(editor.Caret.Line).Length
           | _ -> 0,0
   
   type XSVim() =
  
positive.code:     | Down
      | Left
      | Right
      | ToCharInclusive of c:char
      | ToCharExclusive of c:char
      | WordForwards of c:char
  
negative.code: 
          let multiplier, keyList =
              match keyList with
              | OneToNine d1 :: Digit d2 :: Digit d3 :: Digit d4 :: t -> Some(d1 * 1000 + d2 * 100 + d3 * 10 + d4), t
              | OneToNine d1 :: Digit d2 :: Digit d3 :: t -> Some (d1 * 100 + d2 * 10 + d3), t
              | OneToNine d1 :: Digit d2 :: t -> Some (d1 * 10 + d2), t
              | OneToNine d :: t -> Some d,t
              | _ -> None, keyList
  
          let action =
  