anchor.diff:          | "v" -> Some VisualMode
           | "<C-v>" -> Some VisualBlockMode
           | "V" -> Some VisualLineMode
  +        | _ -> None
  +
  +    let (|Escape|_|) character =
  +        match character with
  +        | "<esc>" -> Some Escape
  +        | "<C-c>" -> Some Escape
           | _ -> None
   
       let (|Keys|_|) (keys:string) =
  
positive.code:                 editor.SelectionMode <- if mode = VisualBlockMode then SelectionMode.Block else SelectionMode.Normal
                  editor.Caret.Mode <- CaretMode.Block
                  editor.Caret.PreserveSelection <- true
                  let start, finish = VimHelpers.getRange editor command.textObject
                  let newState = { vimState with mode = mode; visualStartOffset = editor.Caret.Offset }
                  setSelection newState editor command start finish
                  newState
  
negative.code:                 topVisibleLine + ((editor.VAdjustment.PageSize / editor.LineHeight) |> int))
          bottomVisibleLine - topVisibleLine
  
      let getRange (vimState:VimState) (editor:TextEditorData) motion =
          let line = editor.GetLine editor.Caret.Line
          match motion with
          | Right -> 
  