2010-10-14 11 views
7

Digamos que estoy editando blah.txt con Emacs y decido open dired to rename the file blah.txt. Cuando presiono C-x d RET (o C-x C-f RET), aparecerá un búfer directo para mostrar el contenido del directorio que contiene blah.txt, pero el cursor no estará en blah.txt. Así que necesito buscar primero mi archivo (C-s blah.txt) para colocar el cursor en él y luego puedo cambiarle el nombre (R).¿Abrir dir y selecciona el archivo asociado con el buffer anterior?

¿Cómo automatizo o elimino el paso C-s blah.txt?

Respuesta

12

dired-jump es exactamente lo que quiere.

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

A continuación, llame:

M-x dired-jump 

o

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

Si sigue las instrucciones del manual, también obtendrá las asociaciones de teclas correctas: 'Ch ig'' (dired-x) Instalación opcional Dired Jump'' RET' – phils

1

Usted puede hacer algo así:

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

Entonces el único archivo visible en dired será su archivo actual y el cursor estará bien en él.

5

Quiere C-x C-j.

+0

¿Y qué es 'C-x C-j'? No está enlazado en búferes de texto o búfers direccionales (Emacs 23.2). –

+4

@Trey: 'C-x C-j' está obligado a' dired-jump', pero solo cuando 'dired-x' está cargado. (Creo que hay una política de Emacs que 'dired-x' no cumple aquí.) – Gilles

+0

Gracias, Gilles; No me había dado cuenta de que no estaba obligado por defecto. – offby1

1

Este consejo va a hacer lo que quiere:

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

Nota: Obras para C-x d, pero no es el punto de entradaC-x C-f para dired.

0
$ emacs --version 
GNU Emacs 24.3.1 

En .emacs:

(require 'dired-x) 

Ahora C-x C-j debe estar vinculado a dired-jump.

Cuestiones relacionadas