From WikEmacs
Jump to navigation Jump to search

Dired+ is a Dired extension.

It extends functionalities provided by standard GNU Emacs files `dired.el', `dired-aux.el', and `dired-x.el'.


With Emacs24, with package.el:

  M-x list-packages RET

look for dired+, press enter to read more about it, press i to mark for installation and x to execute.

With Emacs23, else install package.el and do the above, or install el-get and type:

  M-x el-get-install RET dired+ RET

Features overview

Key bindings changed. Menus redefined. `diredp-mouse-3-menu' popup menu added. New commands. Some commands enhanced.

All of the new functions, variables, and faces defined here have the prefix `diredp-' (for Dired Plus) in their names.

You can read all the documentation with package.el or seeing the sources.

  • Buffer is colorized. File extensions use different colors.
  • Lets you use commands that normally operate on the marked files to operate instead on all files in a Dired buffer, by using ‘C-u C-u’. Especially useful in Dired buffers with files from multiple directories. Use ‘C-u C-u M-g’ to ‘grep’ all files, ‘C-u C-u C’ to copy all files, and so on. Use ‘C-u C-u C-u’ to operate on all directories as well as all files.
  • F to open all marked files
  • press *. to mark files by extension (and write the dot as part of the extension)
  • use menu-mark-Omit mark to omit a subset of files (useful with find-dired)
  • i on an inserted subdir takes you back to the subdir line in the parent listing (it bounces between the two subdir locations).


Menus are richer.

Inserted Subdirs, Multiple Dired Buffers, Files from Anywhere,...

These two standard Dired features are worth pointing out:

  • You can insert multiple subdirectory listings into a single Dired buffer using `i' on each subdir line. Use `C-u i' to specify `ls' switches. Specifying witch `R' inserts the inserted subdirectory's subdirs also, recursively. You can also use `i' to bounce between a subdirectory line and its inserted-listing header line. You can delete a subdir listing using `C-u k' on its header line. You can hide/show an inserted subdir using `$' and `M-$'. You can use `C-_' to undo any of these operations.
  • You can open a Dired buffer for an arbitrary set of files, from different directories.
  • First, you can pass a glob pattern with wildcards to `dired' interactively, as the file name. Beyond that, you can invoke `dired' non-interactively, passing it a cons of buffer name and file names. Relative file names are interpreted relative to the value of `default-directory'. Use absolute file names if appropriate.

Some other libraries, such as `Bookmark+' and `Icicles', make it easy to create or re-create Dired buffers that list specific files and have a particular set of markings. This can be handy for using Dired buffers to manage projects. In such use cases you might have multiple Dired buffers that have quite specific contents and that you want to keep around during a session.

This is one motivation for the Dired+ `diredp-*-recursive' commands, which act on the marked files in marked subdirectories, recursively. In one sense these commands are an alternative to using a single Dired buffer with inserted subdirectories. They let you use the same operations on the files in a set of Dired directories, without inserting those directories into an ancestor Dired buffer.

So you might have some subdirectories inserted in the same Dired buffer, and you might have separate Dired buffers for some subdirectories. Sometimes it is useful to have both for the same subdirectory. And sometimes it is useful to move from one presentation to the other.

You can use command `diredp-dired-inserted-subdirs' to open a separate Dired buffer for each of the subdirs that is inserted in the current Dired buffer. Markings and Dired switches are preserved.

In the opposite direction, if you use `Icicles' then you can use multi-command `icicle-dired-insert-as-subdir', which lets you insert any number of directories you choose interactively into a Dired ancestor directory listing. If a directory you choose to insert already has its own Dired buffer, then its markings and switches are preserved for the new, subdirectory listing in the ancestor Dired buffer.