       @replaceModeUndoListener = null
 
   deactivateVisualMode: ->
-    return unless @isMode('visual')
     {lastOperation} = @vimState
     restoreColumn = not (lastOperation?.isYank() or lastOperation?.isIndent())
     if restoreColumn and @isMode('visual', 'linewise')

    if @isMode('visual', submode)
      @activateNormalMode()
      return

    # [FIXME] comment out to evaluate necessity.
    # Since I can't understand why this is necessary.
    # unless @isMode('visual')
    #   @deactivateInsertMode()

    oldSubmode = @submode
    # [NOTE] following operation depend operationStack

      @selectCharacterwise()
    @vimState.operationStack.push new BlockwiseSelect(@vimState)

  activateOperatorPendingMode: ->
    # @deactivateInsertMode()
    @setMode('operator-pending')

  resetNormalMode: ->
