Solía tener un atajo de teclado para la siguiente acción:
"Abra la carpeta que contiene este archivo en Dired + y coloque el punto (cursor) en el archivo"
Creo que fue C-x C-j, y no recuerdo haberlo configurado manualmente. Parece que se fue. ¿Los cambios recientes en Dired + quizás cambiaron esto?
De cualquier manera, ¿hay alguna función interactiva incorporada de Dired o Dired + que pueda usar para esto? Si no, ¿cómo puedo construir una?
Puedo correr M-x dired-jump. El problema parece ser que la combinación de teclas se ha ido. Cuando lo hago C-h k C-x C-j RET, ya veo C-x C-j RET (translated from C-x C-j <return>) is undefined.
dired
key-bindings
Amelio Vazquez-Reina
fuente
fuente

dired-jumpni se vincula ninguna tecla.dired-jumpNi siquiera se menciona en Dired + .emacs -Q. (2) Si no puede reproducir desdeemacs -Qentonces, bisecte recursivamente su archivo de inicio para ver qué parte está causando el problema. Para hacer eso, comente 1/2, luego 3/4, luego 7/8 ... Puede usarcomment-regionpara hacer eso (C-ucomentarios). Después de intentar todo eso, si necesita más ayuda (y probablemente no la necesite), pregunte aquí.Respuestas:
El problema
jabber.elydired-xdesafortunadamente conflicto en esta combinación de teclas. Jabber lo usaC-x C-jcomo prefijo para todas sus claves, mientras que dired lo configura para su amadodired-jump(probablemente es por eso que este último se hace opcional a través de ladired-bind-jumpvariable).Para complicar más las cosas, si Jabber está instalado con
package.elél, vincula esta clave dos veces. Primero en el inicio de Emacs, luego al cargarjabber.el.La solución
Enlazar
dired-jumpantes y después de cargar Jabber. Asegúrese de que esto suceda después(package-initialize)en su archivo de inicio (si lo usa).O, si está utilizando Emacs 24.4, lo siguiente es un poco preferido:
Para continuar usando el mapa de teclas jabber, puede vincularlo a una secuencia de teclas diferente, como en
fuente
#antes'dired-jump? También he visto que se usa al agregar funciones a los ganchos.functioncita. Es casi lo mismo que una cita regular, pero le dice al compilador de bytes que este símbolo es una función (que puede usar para dar advertencias útiles). Es irrelevante en su archivo init, pero es relevante en los paquetes, así que trato de motivar las buenas prácticas.Como otros ya han notado, está pensando en la función
dired-jump, que es proporcionada por Dired-x (no Dired +), y está vinculadaC-x C-jcuando se carga la biblioteca Dired-x. (Se puede desactivar esta unión mediante el establecimientodired-bind-jumpdenilantes de cargar Dired-x).Dado que
C-x C-jhace algo, en lugar de quejarse de queC-x C-jno está definido, lo que está sucediendo es que algo más ha definido un vínculo para ello. Quien haya definido el último enlace gana.Por lo tanto, debe rastrear qué otro paquete que está cargando está anulando
C-x C-j. Ese paquete se carga después de Dired-x, por lo que si está cargandodired-xen su archivo init, es algo que está cargando más adelante o algo que se carga automáticamente en algún momento.Como
C-x C-jno hace nada por sí solo, pero espera a que se presione otra tecla, es una tecla de prefijo. PresioneC-x C-j C-hpara ver una lista de enlaces que comienzan con este prefijo. Esto debería darle una buena idea del paquete culpable. La hipótesis de Malabarba de que es el modo Jabber es plausible. Una vez que haya identificado una secuencia de teclas que comienza con el prefijoC-x C-j, presioneC-h kseguido de esa secuencia de teclas. Esto mostrará el texto de ayuda para ese comando y el paquete que proporciona el comando. Es probable que el paquete que proporciona el comando sea el mismo paquete que define el enlace.Es poco probable que necesite ir tan lejos, pero por si acaso, si hay algún enlace de teclas que no puede rastrear, vea ¿Cómo puedo averiguar en qué mapa de teclas está vinculada una tecla?
Si desea cargar ese paquete que anula
C-x C-j, pero no quiere que se haga cargo de ese enlace, vea si tiene una opción para omitir ese enlace. Si no es así, puede recuperar el enlace: haga los arreglos para que se ejecute(global-set-key "\C-x\C-j" 'dired-jump)después de cargar el paquete ofensivo. Puede ser suficiente poner eso al final de su archivo de inicio. Si no, puedes usarfuente
¿Qué ves cuando lo haces C-hkC-xC-jRET?
Deberías ver que está obligado a hacerlo
dired-jump. Si no es así, entonces o bien no lo ha hechorequirededired-xo / alguna otra overrode paquete que la unión con otra cosa.Si puedes hacerlo
M-x dired-jumpy solo necesitas ese enlace, entonces puedes hacerloPero si
dired-bind-jumpes asíty si es así(require 'dired-x), ese paquete establecerá ese enlace para usted.fuente
C-x C-j RET (translated from C-x C-j <return>)que no está definido.M-x dired-jump? Si no, entonces no tiene eldired-xpaquete cargado.M-x dired-jump. Olvidé mencionar que en el OPemacs -Qy hace justo(require 'dired-x). Si eso funciona, entonces llene gradualmenteinit.elhasta que esa unión desaparezca una vez más; de esa manera encontrarás al culpable. Otra forma es hacer grep / ag / ack recursivoC\-x\s+C\-jen su carpeta .emacs.d.Yo uso esto regularmente. Solo lo probé con
emacs -Q, esto es todo lo que necesitas:La funcionalidad es proporcionada por
dired-x, que es diferente dedired+. El primero se envía con el núcleo de Emacs, el último es una biblioteca de extensión de terceros.fuente
dired-bind-jumpesté configurado en su valor predeterminadot.dired-bind-jumpest. También estoy cargando(require 'dired-x). Extraño