     # But corresponding cursorsComponent(HTML element) is added in sync.
     # So to modify style of cursorsComponent, we have to make sure corresponding cursorsComponent
     # is available by component in sync to model.
-    @editorElement.component.updateSync()
+    if submode is 'blockwise'
+      @editorElement.component.updateSync()
 
-    for cursor in cursorsToShow
-      @subscriptions.add setStyleOffset(cursor, {submode, @editorElement})
+    cursorsToShow.map (cursor) =>
+      cursorNode = getCursorNode(@editorElement, cursor)
+      setStyle(cursorNode.style, getOffset(submode, cursor))
 
 module.exports = CursorStyleManager

      @refresh()

  destroy: ->
    @subscriptions.dispose()
    @lineHeightObserver.dispose()
    {@subscriptions, @lineHeightObserver} = {}

  refresh: ->
    {submode} = @vimState
    @subscriptions?.dispose()
    @subscriptions = new CompositeDisposable


settings = require './settings'
swrap = require './selection-wrapper'
isSpecMode = atom.inSpecMode()

lineHeight = null

getCursorNode = (editorElement, cursor) ->
  cursorsComponent = editorElement.component.linesComponent.cursorsComponent
  cursorsComponent.cursorNodesById[cursor.id]

# Return cursor style offset(top, left)
# ---------------------------------------
getOffset = (submode, cursor) ->
  {top, left} = {}
  {selection, editor} = cursor
  switch submode
    when 'characterwise', 'blockwise'
      unless selection.isReversed()
