       extend @commands,
         "d": -> @yank deleteFromDocument: true
         "c": -> @yank(); enterInsertMode()
-
-    # Map "n" and "N" for poor-man's find.
-    unless @options.underEditMode
-      do =>
-        findBackwards = false
-        query = getFindModeQuery()
-        return unless query
-
-        executeFind = => @protectClipboard =>
-          initialRange = @selection.getRangeAt(0).cloneRange()
-          caseSensitive = /[A-Z]/.test query
-          if query
-            window.find query, caseSensitive, findBackwards, true, false, true, false
-            newRange = @selection.getRangeAt(0).cloneRange()
-            range = document.createRange()
-            range.setStart initialRange.startContainer, initialRange.startOffset
-            range.setEnd newRange.endContainer, newRange.endOffset
-            @selection.removeAllRanges()
-            @selection.addRange range
-
-        extend @movements,
-          "n": -> executeFind()
-          "N": -> findBackwards = not findBackwards; executeFind()
+    else
+      @installFindMode()
 
     @clipboardContents = ""
     @paste (text) => @clipboardContents = text

    r = t = selection.getRangeAt 0
    if selection.type == "Range"
      r = t.cloneRange()
      r.collapse(@getDirection() == backward)
    t = r.startContainer
    t = t.childNodes[r.startOffset] if t.nodeType == 1
    o = t

    extend @commands,
      "y": ->
        # Special case: "yy" (the first from edit mode, and now the second).
        @selectLine() if @options.yYanksLine
        @yank()
      "V": -> new VisualLineMode @options

