anchor.diff:  
           let run = getCommand multiplier
           LoggingService.LogDebug (sprintf "%A %A" state.mode keyList)
  +        let newState =
  +            match keyList with
  +            | [ FindChar m; c ] -> { state with findCharCommand = run Move ( m c ) |> Some }
  +            | _ -> state
  +
           let action =
               match state.mode, keyList with
               | InsertMode, [ "<esc>" ] -> [ run (SwitchMode NormalMode) Nothing ]
               | NormalMode, [ 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 ]
               | NormalMode, [ Action action; Movement m ] -> [ run action m ]
               | NormalMode, [ "u" ] -> [ run Undo Nothing ]
               | NormalMode, [ "d"; "d" ] -> [ run Delete WholeLine ]
               | NormalMode, [ "c"; "c" ] -> [ run Delete WholeLine; run (SwitchMode InsertMode) Nothing ]
               | NormalMode, [ "C" ] -> [ run Delete EndOfLine; run (SwitchMode InsertMode) Nothing ]
  +            | NormalMode, [ "D" ] -> [ run Delete EndOfLine ]
               | NormalMode, [ Action action; FindChar m; c ] -> [ run action (m c) ]
               | NormalMode, [ Action action; "i"; BlockDelimiter c ] -> [ run action (InnerBlock c) ]
               | NormalMode, [ ModeChange mode ] -> [ run (SwitchMode mode) Nothing ]
  
positive.code:     keys: string list
      mode: VimMode
      desiredColumn: int // If we move up/down, which column did we start at?
      findChar: char option
      lastAction: VimAction list // used by . command to repeat the last action
  }
  
  
negative.code:             | NormalMode, [ "g"; "g" ] -> [ run Move StartOfDocument ]
              | NormalMode, [ "." ] -> [ run RepeatLastAction Nothing ]
              | NormalMode, [ "g"; "d" ] -> wait
              | NormalMode, [ ";" ] -> [ run RepeatLastFindCommand Nothing ]
              | NormalMode, [ _; _; _; _ ] -> [ run ResetKeys Nothing ]
              | _ -> []
          multiplier, action, newState
  
      let handleKeyPress state (keyPress:KeyDescriptor) editorData =
          let newKeys =
  