anchor.diff:      | Undo
       | InsertLineAbove
       | InsertLineBelow
  +    | RepeatLastAction
  +    | ResetKeys
       | DoNothing
   
   type TextObject =
  
positive.code:             | NormalMode, [ "O" ] -> [ run InsertLineAbove Nothing; run (SwitchMode InsertMode) Nothing ]
              | NormalMode, [ Action action ] -> wait
              | NormalMode, [ "g"; "g" ] -> [ run Move StartOfDocument ]
              | NormalMode, [ "g"; "d" ] -> wait
              | _ -> []
          multiplier, action
  
  
negative.code:                 ClipboardActions.Cut textEditorData
              | Visual -> textEditorData.SetSelection(start, finish)
              | Undo -> MiscActions.Undo textEditorData
  
              | InsertLineBelow -> MiscActions.InsertNewLineAtEnd textEditorData
              | InsertLineAbove -> textEditorData.Caret.Column <- 1; MiscActions.InsertNewLine textEditorData; CaretMoveActions.Up textEditorData
              | _ -> ()
  
          match command.commandType with
          | ResetKeys -> { vimState with keys = [] }
          | SwitchMode mode ->
              match mode with
              | NormalMode -> 
  