         selection.setBufferRange(originalRange)
 
   selectBlockwise: ->
-    selections = @editor.getSelections()
-    for selection in selections
+    if @editor.getLastSelection().isEmpty()
+      @editor.selectRight()
+      return
+
+    for selection in @editor.getSelections()
       tail = selection.getTailBufferPosition()
       head = selection.getHeadBufferPosition()
       {start, end} = selection.getBufferRange()

      @activateNormalMode()
      return

    if @isVisualMode()
      switch submode
        when 'linewise' then @selectLinewise()
        when 'characterwise' then @selectCharacterwise()
        when 'blockwise' then @selectBlockwise()
    else
      @deactivateInsertMode()
      if submode is 'linewise'
        @selectLinewise()
      else
        @editor.selectRight()

    @setMode('visual', submode)
    @updateStatusBar()

  # Private: Select lines containing cursor with saving original column.
  selectLinewise: ->
    # Keep original range as marker's property to restore column.
    for selection in @editor.getSelections()
      originalRange = selection.getBufferRange()

      for row in selection.getBufferRowRange()
        selection.selectLine(row)

  selectCharacterwise: ->
    if @editor.getLastSelection().isEmpty()
      @editor.selectRight()
      return

    for selection in @editor.getSelections()
      {originalRange} = selection.marker.getProperties()
      if originalRange
