anchor.diff:      | ABlock of string * string
       | InnerBlock of string * string
       | WholeLine
  +    | LastLine
       // motions
       | Up
       | Down
  
positive.code:         | "b" -> Some WordBackwards
          | "e" -> Some ForwardToEndOfWord
          | "E" -> Some BackwardToEndOfWord
          | _ -> None
  
      let (|FindChar|_|) character =
  
negative.code:             | 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 ]
  