2010-10-14 10 views
7

Powiedzmy, że edytuję blah.txt z Emacsem i postanawiam open dired to rename the file blah.txt. Po naciśnięciu klawisza C-x d RET (lub C-x C-f RET) pojawi się bufor z opcją zamkniętego wyświetlania, aby wyświetlić zawartość katalogu zawierającego blah.txt, ale kursor nie będzie wyświetlany na blah.txt. Dlatego najpierw muszę przeszukać mój plik (C-s blah.txt), aby umieścić na nim kursor, a następnie zmienić jego nazwę (R).Otwórz dired i wybierz plik skojarzony z poprzednim buforem?

Jak zautomatyzować lub usunąć krok C-s blah.txt?

Odpowiedz

12

dired-jump jest dokładnie tym, czego potrzebujesz.

(autoload 'dired-jump "dired-x" "Jump to dired corresponding current buffer.") 
(autoload 'dired-jump-other-window "dired-x" "jump to dired in other window.") 

Następnie zadzwonić:

M-x dired-jump 

lub

M-x dired-jump-other-window 
+0

Postępując zgodnie z instrukcjami zawartymi w podręczniku, otrzymasz również poprawne powiązanie klawiszy: 'Ch ig'' (dired-x) Opcjonalna instalacja Dired Jump' ' RET " – phils

1

można zrobić coś takiego:

M-: (dired (buffer-name (current-buffer))) 

Wtedy tylko plik widoczny w dired będzie aktualna plik i kursor będzie tuż przy nim.

5

Chcesz C-x C-j.

+0

Co to jest "C-x C-j"? Nie jest związany w buforach tekstowych lub buforach diredowych (Emacs 23.2). –

+4

@Trey: 'C-x C-j' jest związany z' dired-jump', ale tylko gdy załadowany jest 'dired-x'. (Wydaje mi się, że istnieje polityka Emacsa, której "dired-x" nie spełnia tutaj.) – Gilles

+0

Dzięki, Gilles; Nie zdawałem sobie sprawy, że nie jest ona domyślnie związana. – offby1

1

Ta rada będzie robić to, co chcesz:

(defadvice dired (around dired-jump-to-buffer activate) 
    "When running dired, move cursor to the line for the buffer we came from" 
    (interactive (list nil nil)) ;; bogus values, will be overwritten below 
    (let ((coming-from (buffer-file-name))) 
(ad-set-args 0 (dired-read-dir-and-switches "")) 
ad-do-it 
(when (and coming-from 
     (equal (file-truename default-directory) (file-truename (file-name-directory coming-from)))) 
    (goto-char (point-min)) 
    (search-forward (file-name-nondirectory coming-from) nil t)))) 

Uwaga: Pracuje dla C-x głęb, ale nie C-x C-f punkt wejście do dired.

0
$ emacs --version 
GNU Emacs 24.3.1 

W .emacs:

(require 'dired-x) 

Teraz C-x C-j powinien być powiązany z dired-jump.