anchor.diff:          let action =
               match state.mode, keyList with
               | InsertMode, [ "<esc>" ] -> [ run (SwitchMode NormalMode) Nothing ]
  -            | VisualMode, [ "<esc>" ] -> [ run (SwitchMode NormalMode) Nothing ]
               | NormalMode, [ Movement m ] -> [ run Move m ]
  -            | VisualMode, [ Movement m ] -> [ run Move m ]
               | NormalMode, [ FindChar m; c ] -> [ run Move (m c) ]
               | NormalMode, [ ";" ] -> match state.findCharCommand with Some command -> [ command ] | None -> []
               | NormalMode, [ "c"; Movement m ] -> [ run Delete m; run (SwitchMode InsertMode) Nothing ]
  
positive.code:         for i in [1..command.repeat] do
              let start, finish = VimHelpers.getRange textEditorData command.textObject
              match command.commandType with
              | Move -> textEditorData.Caret.Offset <- finish
              | Delete ->
                  textEditorData.SetSelection(start, finish)
                  ClipboardActions.Cut textEditorData
  
negative.code: type VimState = {
      keys: string list
      mode: VimMode
      visualStartOffset: int
      findCharCommand: VimAction option
      lastAction: VimAction list // used by . command to repeat the last action
  }
  