anchor.diff:              | NormalMode, [ "g"; "g" ] -> [ run Move StartOfDocument ]
               | NormalMode, [ "." ] -> [ run RepeatLastAction Nothing ]
               | NormalMode, [ "g"; "d" ] -> wait
  +            | NormalMode, [ ";" ] -> [ run RepeatLastFindCommand Nothing ]
               | NormalMode, [ _; _; _; _ ] -> [ run ResetKeys Nothing ]
               | _ -> []
  -        multiplier, action
  +        multiplier, action, newState
   
       let handleKeyPress state (keyPress:KeyDescriptor) editorData =
           let newKeys =
  
positive.code:         | _, actions ->
              performActions actions { newState with lastAction = actions } false
  
      let mutable vimState = { keys=[]; mode=NormalMode; desiredColumn=0; findChar=None; lastAction=[] }
  
      override x.Initialize() =
          let editorData = x.Editor.GetContent<ITextEditorDataProvider>().GetTextEditorData()
  
negative.code: 
          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 ]
  