In Emacs dired, how to find/visit multiple files?

2019-01-22 06:46发布

问题:

If I have multiple files marked, how do I find/visit all those marked files in emacs, beside running dired-find-file on each of them?

Is there a build-in command, or do I need some extra lisp code?

回答1:

If you add this to your .emacs, you'll be able to open the files via the keybinding 'F'.

(eval-after-load "dired"
  '(progn
     (define-key dired-mode-map "F" 'my-dired-find-file)
     (defun my-dired-find-file (&optional arg)
       "Open each of the marked files, or the file under the point, or when prefix arg, the next N files "
       (interactive "P")
       (let* ((fn-list (dired-get-marked-files nil arg)))
         (mapc 'find-file fn-list)))))

Obviously you can just override the built-in 'f' if you want.



回答2:

In Emacs 23.2 and higher, the dired-x.el module is available, and it gives you access to a command that does exactly what you want. After you load it (just (load "dired-x"), normally), you'll be able to invoke the function dired-do-find-marked-files. Here's its built-in documentation:

(dired-do-find-marked-files &optional NOSELECT)

Find all marked files displaying all of them simultaneously.
With optional NOSELECT just find files but do not select them.

The current window is split across all files marked, as evenly as possible.
Remaining lines go to bottom-most window.  The number of files that can be
displayed this way is restricted by the height of the current window and
`window-min-height'.

To keep dired buffer displayed, type C-x 2 first.
To display just marked files, type C-x 1 first.

So after dired-x is loaded, you can just use M-x dired-do-find-marked-files RET and you'll get exactly what your question asks for: all marked files will be visited as though you'd run dired-find-file on all of them.



回答3:

You could try dired+ which provides many extensions to dired including the ability to select multiple files and find/view all of them.



标签: emacs dired