       'focus-pane-view-below': => new Panes.FocusPaneViewBelow()
       'focus-previous-pane-view': => new Panes.FocusPreviousPaneView()
 
-  # Private: A helper to actually register the given Commands with the
-  # editor.
-  #
-  # Commands - An object whose keys will be registered within the plugin's
-  #            namespace and whose values are functions that returns the
-  #            operation to push onto the stack or nothing at all.
-  #
-  # Returns nothing.
-  handleCommands: (Commands) ->
-    _.each Commands, (fn, commandName) =>
-      eventName = "vim-mode:#{commandName}"
-      @editorView.command eventName, (event) => @pushOperations(fn(event))
+  # Private: Register multiple command handlers via an {Object} that maps
+  # command names to command handler functions.
+  #
+  # Prefixes the given command names with 'vim-mode:' to reduce redundancy in
+  # the provided object.
+  registerCommands: (commands) ->
+    for commandName, fn of commands
+      do (fn) =>
+        @editorView.command "vim-mode:#{commandName}", fn
+
+  # Private: Register multiple operation-pushing Commands via an {Object} that
+  # maps command names to functions that return operations to push.
+  #
+  # Prefixes the given command names with 'vim-mode:' to reduce redundancy in
+  # the given object.
+  registerOperationCommands: (operationCommands) ->
+    commands = {}
+    for commandName, operationFn of operationCommands
+      do (operationFn) =>
+        commands[commandName] = (event) => @pushOperations(operationFn(event))
+    @registerCommands(commands)
 
   # Private: Attempts to prevent the cursor from selecting the newline
   # while in command mode.

      'scroll-up': => new Scroll.ScrollUp(@editorView, @editor)
      'select-inside-word': => new TextObjects.SelectInsideWord(@editor)
      'register-prefix': (e) => @registerPrefix(e)
      'repeat-prefix': (e) => @repeatPrefix(e)
      'repeat': (e) => new Operators.Repeat(@editor, @)
      'search-complete': (e) => @currentSearch
      'replace-complete': (e) => @currentReplace

    num = parseInt(atom.keymap.keystrokeStringForEvent(e.originalEvent))
    if @topOperation() instanceof Prefixes.Repeat
      @topOperation().addDigit(num)
    else
      if num is 0
        e.abortKeyBinding()
      else
        @pushOperations(new Prefixes.Repeat(num))

  # Private: Figure out whether or not we are in a repeat sequence or we just
  # want to move to the beginning of the line. If we are within a repeat
