anchor.diff:              | NormalMode, [ ";" ] -> match state.findCharCommand with Some command -> [ command ] | None -> []
               | VisualModes, [ Movement m ] -> [ run Move m ]
               | VisualBlockMode, [ "I" ] -> [ run BlockInsert Nothing; ]
  -            | VisualModes, [ "x" ] -> [ run Delete Selection; run (SwitchMode NormalMode) Nothing ]
  -            | VisualModes, [ "d" ] -> [ run Delete Selection; run (SwitchMode NormalMode) Nothing ]
  -            | VisualModes, [ "c" ] -> [ run Delete Selection; run (SwitchMode InsertMode) Nothing ]
  -            | VisualModes, [ "y" ] -> [ run Yank Selection; run (SwitchMode NormalMode) Nothing ]
  +            | VisualModes, [ "x" ] -> [ run Delete Selection; switchMode NormalMode ]
  +            | VisualModes, [ "d" ] -> [ run Delete Selection; switchMode NormalMode ]
  +            | VisualModes, [ "c" ] -> [ run Delete Selection; switchMode InsertMode ]
  +            | VisualModes, [ "y" ] -> [ run Yank Selection; switchMode NormalMode ]
               | _, _ :: _ :: _ :: _ :: t -> [ run ResetKeys Nothing ]
               | _, [] when multiplier > 1 -> wait
               | _ -> [ run ResetKeys Nothing ]
  
positive.code: 
          let action =
              match state.mode, keyList with
              | VisualBlockMode, [ Escape ] -> [ run Move SelectionStart; run (SwitchMode NormalMode) Nothing ]
              | _, [ Escape ] -> [ run (SwitchMode NormalMode) Nothing; run Move Left ]
              | NotInsertMode, [ Movement m ] -> [ run Move m ]
              | NormalMode, [ "c"; FindChar m; c ] -> [ run Delete (m c); run (SwitchMode InsertMode) Nothing ]
              | NotInsertMode, [ FindChar m; c ] -> [ run Move (m c) ]
              | NormalMode, [ "c"; Movement m ] -> [ run Delete m; run (SwitchMode InsertMode) Nothing ]
              | NormalMode, [ Action action; Movement m ] -> [ run action m ]
              | NormalMode, [ "u" ] -> [ run Undo Nothing ]
              | NormalMode, [ "<C-r>" ] -> [ run Redo Nothing ]
              | NormalMode, [ "d"; "d" ] -> [ run Delete WholeLineIncludingDelimiter ]
              | NormalMode, [ "c"; "c" ] -> [ run Delete WholeLine; run (SwitchMode InsertMode) Nothing ]
              | NormalMode, [ "y"; "y" ] -> [ run Yank WholeLineIncludingDelimiter ]
              | NormalMode, [ "C" ] -> [ run Delete EndOfLine; run (SwitchMode InsertMode) Nothing ]
              | NormalMode, [ "D" ] -> [ run Delete EndOfLine ]
              | NormalMode, [ "x" ] -> [ run Delete CurrentLocation; run Move EnsureCursorBeforeDelimiter ]
              | NormalMode, [ "p" ] -> [ run (Put After) Nothing ]
  
negative.code:             | NormalMode, [ Action action; FindChar m; c ] -> [ run action (m c) ]
              | NormalMode, [ Action action; "i"; BlockDelimiter c ] -> [ run action (InnerBlock c) ]
              | NormalMode, [ Action action; "a"; BlockDelimiter c ] -> [ run action (ABlock c) ]
              | NormalMode, [ ModeChange mode ] -> [ switchMode mode ]
              | NormalMode, [ "a" ] -> [ run Move RightIncludingDelimiter; switchMode InsertMode ]
              | NormalMode, [ "A" ] -> [ run Move EndOfLine; switchMode InsertMode ]
              | NormalMode, [ "O" ] -> [ run (InsertLine After) Nothing; switchMode InsertMode ]
              | NormalMode, [ "o" ] -> [ run (InsertLine Before) Nothing; switchMode InsertMode ]
              | NormalMode, [ Action _ ] -> wait
              | NormalMode, [ Action _; "i" ] -> wait
              | NormalMode, [ Action _; "a" ] -> wait
  