diff --git a/evil-ex.el b/evil-ex.el
--- a/evil-ex.el
+++ b/evil-ex.el
@@ -611,8 +611,10 @@
 Replaces % by the current file-name,
 Replaces # by the alternate file-name in FILE-NAME."
   (let ((current-fname (buffer-file-name))
-        (alternate-fname (and (other-buffer)
-                              (buffer-file-name (other-buffer)))))
+        (alternate-fname (cdr (buffer-list))))
+    (while (and alternate-fname
+                (not (buffer-file-name (car alternate-fname))))
+      (pop alternate-fname))
     (when current-fname
       (setq file-name
             (replace-regexp-in-string "\\(^\\|[^\\\\]\\)\\(%\\)"
@@ -621,7 +623,8 @@
     (when alternate-fname
       (setq file-name
             (replace-regexp-in-string "\\(^\\|[^\\\\]\\)\\(#\\)"
-                                      alternate-fname file-name
+                                      (buffer-file-name (car alternate-fname))
+                                      file-name
                                       t t 2)))
     (setq file-name
           (replace-regexp-in-string "\\\\\\([#%]\\)"
