anchor.diff:  type VimMode =
       | NormalMode
       | VisualMode
  +    | VisualLineMode
       | InsertMode
   
   type CommandType =
  
positive.code:                 if h.commandType <> DoNothing then
                      let newState = runCommand state editorData h
                      performActions t { newState with keys = [] } true
                  else 
                      newState, true
          match multiplier, action with
          | _, [ a ] when a.commandType = RepeatLastAction -> // "."
  
negative.code:         | SwitchMode mode ->
              match mode with
              | NormalMode -> 
                  editor.Caret.Mode <- CaretMode.Block
                  editor.Caret.PreserveSelection <- false
                  editor.ClearSelection()
                  { vimState with mode = mode }
              | VisualMode | VisualLineMode -> 
                  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 start finish
                  newState
              | InsertMode ->
                  editor.Caret.Mode <- CaretMode.Insert
                  editor.Caret.PreserveSelection <- false
                  { vimState with mode = mode; keys = [] }
          | _ -> vimState
  
  