anchor.diff:                  editor.Caret.Offset
           | EndOfLine -> editor.Caret.Offset, line.EndOffset
           | StartOfLine -> editor.Caret.Offset, line.Offset
  +        | StartOfDocument -> editor.Caret.Offset, 0
           | FirstNonWhitespace -> editor.Caret.Offset, line.Offset + editor.GetLineIndent(editor.Caret.Line).Length
           | WholeLine -> line.Offset, line.EndOffset
           | ToCharInclusiveBackwards c ->
  
positive.code:         | "v" -> Some VisualMode
          | _ -> None
  
      let getCommand (repeat: int option) commandType textObject =
          { repeat=(match repeat with | Some r -> r | None -> 1); commandType=commandType; textObject=textObject }
  
  
negative.code:         | "d" -> Some Delete
          | "c" -> Some Change
          | "v" -> Some Visual
          | "g" -> Some Go
          | _ -> None
  
      let (|ModeChange|_|) character =
  