2010-10-14 6 views
7

Nehmen wir an, ich bearbeite blah.txt mit Emacs und ich entscheide mich für open dired to rename the file blah.txt. Wenn ich C-x d RET (oder C-x C-f RET) drücke, wird ein Dired-Puffer angezeigt, um den Inhalt des Verzeichnisses anzuzeigen, das blah.txt enthält, aber der Cursor ist nicht auf blah.txt. Also muss ich meine Datei zuerst suchen (C-s blah.txt), um meinen Cursor darauf zu setzen, und dann kann ich es umbenennen (R).Dired öffnen und die Datei auswählen, die dem vorherigen Puffer zugeordnet ist?

Wie automatisiere oder entferne ich den Schritt C-s blah.txt?

Antwort

12

dired-jump ist genau das, was Sie wollen.

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

Dann rufen:

M-x dired-jump 

oder

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

Wenn Sie den Anweisungen im Handbuch folgen, erhalten Sie auch die richtigen Tastenbelegungen: 'Ch ig'' (dired-x) Optionale Installation Dired Jump' ' RET' – phils

1

Sie können so etwas tun:

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

Dann ist die einzige Datei sichtbar in dired wird Ihre aktuelle Datei und Cursor wird auf es richtig sein.

5

Sie möchten C-x C-j.

+0

Und was ist 'C-x C-j'? Es ist nicht in Text-Buffern oder Dired-Buffern gebunden (Emacs 23.2). –

+4

@Trey: 'C-x C-j' ist an' dired-jump' gebunden, aber nur wenn 'dired-x' geladen ist. (Ich denke, es gibt eine Emacs-Richtlinie, die dired-x hier nicht entspricht.) – Gilles

+0

Danke, Gilles; Ich hatte nicht bemerkt, dass es nicht standardmäßig gebunden war. – offby1

1

Dieser Ratschlag wird tun, was Sie wollen:

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

Hinweis: Werke für C-x d, aber nicht der C-x C-f Einstiegspunkt dired.

0
$ emacs --version 
GNU Emacs 24.3.1 

In .emacs:

(require 'dired-x) 

Jetzt C-x C-j sollte an dired-jump gebunden sein.