       @vimState.activate('visual', 'characterwise')
 
   execute: ->
-    if @isLinewise() or (not @isLinewise() and (@direction in ['right', 'left']))
-      super
-    else
-      @editor.transact =>
-        return if (count = @getCount()) is 0
-        @withBlockwise =>
-          if @direction is 'down'
-            bottom = _.last(@editor.getSelectionsOrderedByBufferPosition())
-            range = bottom.getBufferRange()
-            if range.end.row is @editor.getLastBufferRow()
-              # Since inserting new line modify selected range
-              # We have to revert selction range to preserved one.
-              ensureBufferEndWithNewLine(@editor)
-              bottom.setBufferRange(range)
-
-          bss = @vimState.getBlockwiseSelectionsOrderedByBufferPosition()
-          bss.reverse() if @direction is 'down'
-          for bs in bss
-            @duplicateCharacterwise(bs, count)
+    @editor.transact =>
+      return if (count = @getCount()) is 0
+      @withBlockwise =>
+        if @direction is 'down'
+          bottom = _.last(@editor.getSelectionsOrderedByBufferPosition())
+          range = bottom.getBufferRange()
+          if range.end.row is @editor.getLastBufferRow()
+            # Since inserting new line modify selected range
+            # We have to revert selction range to preserved one.
+            ensureBufferEndWithNewLine(@editor)
+            bottom.setBufferRange(range)
+
+        bss = @vimState.getBlockwiseSelectionsOrderedByBufferPosition()
+        bss.reverse() if @direction is 'down'
+        for bs in bss
+          @duplicateCharacterwise(bs, count)
 
   duplicateLinewise: (selection, count) ->
     getText = ->

        else
          @duplicateCharacterwise(selection, count)

class DuplicateSelectedTextUp extends DuplicateSelectedText
  direction: 'up'
  withBlockwise: (fn) ->

class MoveSelectedTextDown extends MoveSelectedTextUp
  direction: 'down'

# Left/Right
class MoveSelectedTextLeft extends MoveSelectedTextUp
  direction: 'left'

  moveLinewise: (selection) ->
    switch @direction
