     @subscribe atom.workspace.onDidChangeActivePane ->
       workspaceClassList.remove('vim-mode-plus-pane-maximized', 'hide-tab-bar')
 
-    @subscribe settings.observe 'highlightSearch', (newValue) =>
+    @subscribe settings.observe 'highlightSearch', (newValue) ->
       if newValue
-        @refreshHighlightSearchForVisibleEditors()
+        # Re-setting value trigger highlightSearch refresh
+        value = globalState.get('highlightSearchPattern')
+        globalState.set('highlightSearchPattern', value)
       else
-        @clearHighlightSearchForEditors()
+        globalState.set('highlightSearchPattern', null)
 
   observeVimMode: (fn) ->
     fn() if atom.packages.isPackageActive('vim-mode')

    @subscribe atom.commands.add 'atom-text-editor:not([mini])',
      # One time clearing highlightSearch. equivalent to `nohlsearch` in pure Vim.
      # Clear all editor's highlight so that we won't see remaining highlight on tab changed.
      'vim-mode-plus:clear-highlight-search': => @clearHighlightSearchForEditors()
      'vim-mode-plus:toggle-highlight-search': -> settings.toggle('highlightSearch')
      'vim-mode-plus:clear-range-marker': => @clearRangeMarkerForEditors()


    @vimStatesByEditor.forEach(fn)
    @onDidAddVimState(fn)

  clearRangeMarkerForEditors: ->
    for editor in atom.workspace.getTextEditors()
      @getEditorState(editor).clearRangeMarkers()
