anchor.diff:          | SwitchMode mode ->
               match mode with
               | NormalMode -> 
  -                textEditorData.Caret.Mode <- CaretMode.Block
  -                textEditorData.Caret.PreserveSelection <- false
  +                editor.Caret.Mode <- CaretMode.Block
  +                editor.Caret.PreserveSelection <- false
  +                editor.ClearSelection()
                   { vimState with mode = mode }
  -            | VisualMode -> 
  -                textEditorData.Caret.Mode <- CaretMode.Block
  -                textEditorData.Caret.PreserveSelection <- true
  -                { vimState with mode = mode; visualStartOffset = textEditorData.Caret.Offset }
  +            | 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 ->
  -                textEditorData.Caret.Mode <- CaretMode.Insert
  -                textEditorData.Caret.PreserveSelection <- false
  +                editor.Caret.Mode <- CaretMode.Insert
  +                editor.Caret.PreserveSelection <- false
                   { vimState with mode = mode; keys = [] }
           | _ -> vimState
   
  
positive.code:                 state.keys @ [sprintf "<C-%c>" c]
              | NormalMode, c when keyPress.KeyChar <> '\000' -> state.keys @ [c |> string]
              | VisualMode, c when keyPress.KeyChar <> '\000' -> state.keys @ [c |> string]
              | VisualMode, c | InsertMode, c ->
                  match keyPress.SpecialKey with
                  | SpecialKey.Escape -> state.keys @ ["<esc>"]
                  | _ -> state.keys
  
negative.code: type VimMode =
      | NormalMode
      | VisualMode
      | VisualLineMode
      | InsertMode
  
  type CommandType =
  