Dired режим одного окна? (Emacs) - PullRequest
8 голосов
/ 02 марта 2010

существует ли способ работы dired в одном окне, чтобы при обходе каталогов у меня не было n буферов dired для промежуточных каталогов? Однако - если я запускаю другой dired буфер в совершенно отдельном каталоге (из минибуфера, а не нажимаю [enter] в подкаталоге в уже открытом dired экземпляре), я бы хотел сохранить два отдельных dired буфера ... я использую ido-dired, так как у меня включен режим ido, но я не знаю, что решение будет другим? Большое спасибо!

Ответы [ 5 ]

19 голосов
/ 02 марта 2010

Я уменьшаю беспорядок dired-buffer, нажимая a (dired-find-alternate-file) в подкаталогах вместо RET ; перезаписывает текущее окно.

11 голосов
/ 02 марта 2010

http://www.emacswiki.org/emacs/dired-single.el

;;; dired-single.el --- Reuse the current dired buffer to visit another directory...

;;; Commentary:
;;
;;  This package provides a way to reuse the current dired buffer to visit
;;  another directory (rather than creating a new buffer for the new directory).
;;  Optionally, it allows the user to specify a name that all such buffers will
;;  have, regardless of the directory they point to...
2 голосов
/ 22 августа 2011

Dired + позволяет вам сделать это по желанию, и позволяет включать и выключать его в любое время.

См. Также http://www.emacswiki.org/emacs/DiredReuseDirectoryBuffer.

1 голос
/ 02 марта 2010

Если вы в основном хотите, чтобы каждый dired буфер работал с различными подкаталогами, которые все находятся в одной иерархии (например, один dired буфер для каждого из нескольких текущих проектов), вы можете использовать встроенный i ( команды dired-Maybe-insert-subdir ) и k ( dired-do-kill-lines в заголовке вставленного подкаталога для его удаления из буфера). Они позволят вам редактировать несколько каталогов внутри одного буфера. Возможно, вы захотите небольшую пользовательскую команду и переназначить RET, если она слишком укоренилась в вашей мышечной памяти.

1 голос
/ 02 марта 2010

Как это?

(defadvice dired-find-file (around kill-old-buffer activate)
    "When navigate from one dired buffer to another, kill the old one."
    (let ((old-buffer (current-buffer))
          (new-buffer (dired-get-filename))) 
      ad-do-it
      (kill-buffer old-buffer)
      (switch-to-buffer new-buffer)
))
...