anchor.diff:                  topVisibleLine + ((editor.VAdjustment.PageSize / editor.LineHeight) |> int))
           bottomVisibleLine - topVisibleLine
   
  -    let getRange (editor:TextEditorData) motion =
  +    let getRange (vimState:VimState) (editor:TextEditorData) motion =
           let line = editor.GetLine editor.Caret.Line
           match motion with
           | Right -> 
  
positive.code:         | "v" -> Some VisualMode
          | "<C-v>" -> Some VisualBlockMode
          | "V" -> Some VisualLineMode
          | _ -> None
  
      let (|Keys|_|) (keys:string) =
  
negative.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 vimState editor command.textObject
                  let newState = { vimState with mode = mode; visualStartOffset = editor.Caret.Offset }
                  setSelection newState editor command start finish
                  newState
  