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-jump
ni se vincula ninguna tecla.dired-jump
Ni siquiera se menciona en Dired + .emacs -Q
. (2) Si no puede reproducir desdeemacs -Q
entonces, 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-region
para hacer eso (C-u
comentarios). Después de intentar todo eso, si necesita más ayuda (y probablemente no la necesite), pregunte aquí.Respuestas:
El problema
jabber.el
ydired-x
desafortunadamente conflicto en esta combinación de teclas. Jabber lo usaC-x C-j
como 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-jump
variable).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-jump
antes 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.function
cita. 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-j
cuando se carga la biblioteca Dired-x. (Se puede desactivar esta unión mediante el establecimientodired-bind-jump
denil
antes de cargar Dired-x).Dado que
C-x C-j
hace algo, en lugar de quejarse de queC-x C-j
no 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-x
en 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-j
no hace nada por sí solo, pero espera a que se presione otra tecla, es una tecla de prefijo. PresioneC-x C-j C-h
para 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 k
seguido 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 hechorequire
dedired-x
o / alguna otra overrode paquete que la unión con otra cosa.Si puedes hacerlo
M-x dired-jump
y solo necesitas ese enlace, entonces puedes hacerloPero si
dired-bind-jump
es asít
y 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-x
paquete cargado.M-x dired-jump
. Olvidé mencionar que en el OPemacs -Q
y hace justo(require 'dired-x)
. Si eso funciona, entonces llene gradualmenteinit.el
hasta 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\-j
en 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-jump
esté configurado en su valor predeterminadot
.dired-bind-jump
est
. También estoy cargando(require 'dired-x)
. Extraño