anchor.diff:              | InsertMode, [ "<esc>" ] -> [ run (SwitchMode NormalMode) Nothing ]
               | NormalMode, [ Movement m ] -> [ run Move m ]
               | NormalMode, [ 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, [ "d"; "d" ] -> [ run Delete WholeLine ]
  
positive.code:         | "b" -> Some WordBackwards
          | "e" -> Some ForwardToEndOfWord
          | "E" -> Some BackwardToEndOfWord
          | _ -> None
  
      let (|FindChar|_|) character =
  
negative.code:     | ABlock of string * string
      | InnerBlock of string * string
      | WholeLine
      | LastLine
      // motions
      | Up
      | Down
  