     limitNumber(@insertionCount, max: 100)
 
   execute: ->
-    if @isRequireTarget()
-      targetSelected = @selectTarget()
-      if not targetSelected and not @canContinueOnEmptySelection()
-        @vimState.activate('normal')
-        return
-
     if @isRepeated()
       @flashTarget = @trackChange = true
+
+      if @isRequireTarget()
+        targetSelected = @selectTarget()
+        if not targetSelected and not @canContinueOnEmptySelection()
+          return
+
       @editor.transact =>
         @mutateText?()
         for selection, i in @editor.getSelections()

  # - one for undo(handled by modeManager)
  # - one for preserve last inserted text
  setCheckpoint: (purpose) ->
    @checkpoint[purpose] = @editor.createCheckpoint()

  getCheckpoint: (purpose) ->
    @checkpoint[purpose]

  # When each mutaion's extent is not intersecting, muitiple changes are recorded
  # e.g

        @vimState.clearSelections()

    else
      @setCheckpoint('undo')
      if @isRequireTarget()
        targetSelected = @selectTarget()
        if not targetSelected and not @canContinueOnEmptySelection()
          @vimState.activate('normal')
          return

      @observeWillDeactivateMode()

      @mutateText?()
