     if @direction is 'down' # auto insert new linew at last row
       endRow = selection.getBufferRange().end.row
       if endRow >= getVimLastBufferRow(@editor)
-        eof = @editor.getEofBufferPosition()
-        @editor.setTextInBufferRange([eof, eof], "\n")
+        @insertTextAtPoint(@editor.getEofBufferPosition(), "\n")
 
     range = selection.getBufferRange().translate(translation...)
     selection.setBufferRange(range)

    if @direction is 'right'
      eol = selection.getBufferRange().end
      if pointIsAtEndOfLine(@editor, eol)
        @editor.setTextInBufferRange([eol, eol], " ")

    @rotateTextForSelection(selection)
    @editor.scrollToCursorPosition({center: true})

  isCharacterwise: ->
    not @isLinewise()

  setTextInRangeAndSelect: (range, text, selection) ->
    newRange = @editor.setTextInBufferRange(range, text)
    selection.setBufferRange(newRange)

  complementSpacesToPoint: ({row, column}) ->
    eol = @editor.bufferRangeForBufferRow(row).end
    if (fillCount = column - eol.column) > 0
      @insertTextAtPoint(eol, ' '.repeat(fillCount))

  isMovable: (selection) ->
    {start} = selection.getBufferRange()
