 
   activateNormalMode: ->
     @deactivateInsertMode()
-    @deactivateVisualMode()
+    @deactivateVisualMode() if @isMode('visual')
     @vimState.reset()
     @setMode('normal')
 

      @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

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