       else if @isVisualMode()
         @activateNormalMode()
     else
-      @activateVisualMode('characterwise') if @isNormalMode()
+      if @isNormalMode()
+        @activateVisualMode('characterwise')
+      else
+        # When cursor is added selection is empty
+        # using editor.onDidAddCursor not work since at the timing event callbacked,
+        # cursor.selection is `undefined` and editor.getCursors().length isnt editor.getSelections().length
+        # console.log "called!!"
+        lastSelection = @editor.getLastSelection()
+        if lastSelection.isEmpty()
+          lastSelection.selectRight()
 
   dontPutCursorsAtEndOfLine: ->
     # if @editor.getPath()?.endsWith 'tryit.coffee'

    @input = new Input(this)

    @editorElement.addEventListener 'mouseup', @checkSelections.bind(this)

    if atom.commands.onDidDispatch?
      @subscriptions.add atom.commands.onDidDispatch ({target}) =>
        if target is @editorElement
          @checkSelections()
        if @isVisualMode() and (@submode is 'characterwise') and settings.get('showCursorInVisualMode')
          @showCursor()

    @editorElement.classList.add("vim-mode")


  reverseSelections: ->
    reversed = not @editor.getLastSelection().isReversed()
    @syncSelectionsReversedSate(reversed)

  syncSelectionsReversedSate: (reversed) ->
    for selection in @editor.getSelections()
      selection.setBufferRange(selection.getBufferRange(), {reversed})

