2009-07-10 9 views
31

Jeśli mam wiele plików oznaczonych, w jaki sposób znaleźć/odwiedzić wszystkie te oznaczone pliki w emacs, a następnie uruchomić dired-find-file na każdym z nich?W Emacs dired, jak znaleźć/odwiedzić wiele plików?

Czy istnieje polecenie wbudowania, czy też potrzebuję jakiegoś dodatkowego kodu selsynowego?

Odpowiedz

19

Jeśli dodasz to do .emacs, będziesz mógł otwierać pliki za pomocą klawisza skrótu "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))))) 

Oczywiście można po prostu zastąpić wbudowane "f", jeśli chcesz.

+2

Dzięki za to! Mały punkt stylistyczny, ale nie musisz używać 'let *' w tym przypadku (wystarczy "let"). Naprawdę moglibyśmy po prostu uprościć tę ostatnią formę do '(mapc 'find-file (dired-get-marked-files nil arg))'. – camdez

6

Możesz spróbować dired+, który zapewnia wiele rozszerzeń do diredów, w tym możliwość wyboru wielu plików i znaleźć/wyświetlić je wszystkie.

28

W Emacs 23.2 i nowszych dostępny jest moduł dired-x.el, który daje dostęp do polecenia, które wykonuje dokładnie to, co chcesz. Po załadowaniu (zwykle tylko (load "dired-x")), będziesz mógł wywołać funkcję dired-do-find-marked-files. Oto jego wbudowanej dokumentacja:

(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. 

Więc po dired-x jest załadowany, można po prostu użyć Mxdired-do-find-marked-filesRET a dostaniesz dokładnie to, co twoje pytanie prosi: wszystkie zaznaczone pliki zostaną odwiedził jako chociaż na każdym z nich uruchomisz dired-find-file.

+0

Mój tryb diodowy nie rozpoznaje tego polecenia, a ja mam 23.4 – Malabarba

+1

@Bruce Connor: prawdopodobnie Nie masz zainstalowanego dired-x. Spróbuj dodać '(dodaj-hook 'dired-load-hook (funkcja (lambda() (load" dired-x "))))' w '.emacs'. – Adobe

+2

Klawisz "F" jest skrótem klawiaturowym dla plików oznaczonych diadą do zignorowania, przynajmniej w Emacs 24.4. – thdox