¿Cómo evitar escribir "espacio" después de "^" para subir en el directorio en dired?

9

^es la combinación de teclas para moverse al directorio principal en dired("Directorio superior").

Sin embargo, en Gnu Emacsel Windows 7 Professional 64-bitcon mi teclado alemán, no es suficiente para escribir "^" pero tengo que escribir el espacio después para hacer el trabajo de la asignación de teclas.

¿Cómo puedo redefinir la combinación de teclas para evitar tener que presionar la barra espaciadora y mover hacia arriba solo con "^"?


C-h k ^<space> devoluciones

^ ejecuta el comando dired-up-directory, que es una función Lisp compilada interactiva en `dired + .el '.

Está obligado a ^,.

(dired-up-directorio y OTRA VENTANA opcional)

Ejecute Dired en el directorio padre del directorio actual. Encuentre el directorio padre en este búfer u otro búfer. Crea un búfer si es necesario.

Sobre todo inofensivo
fuente
44
Este es un problema del sistema operativo ya que este comportamiento suena como teclas fijas y está integrado en ciertos mapas de teclas, como us-intlen Linux.
wasamasa
Parece que wasamasa tiene razón, en cuyo caso debería preguntar cómo vincular el comando a una tecla diferente.
Andrew Swann
@ AndrewSwann: Tal vez, tal vez no. Es bueno comprobarlo, sí. Pero el comportamiento de Linux debería ser irrelevante aquí, suponiendo que la microsoft-windowsetiqueta sea apropiada.
Dibujó el
La forma más sencilla de verificar esto sería ver si el mismo comportamiento se aplica a otros programas, como escribir ^en notepad.exe.
wasamasa
3
Creo que solo tiene unas pocas opciones: (1) Use una distribución de teclado diferente en la que ^ no sea una tecla muerta; esto se hace a nivel del sistema operativo, no en emacs, o (2) Vincula alguna otra tecla dired-up-directoryy úsala en su lugar, o (3) Vive con el problema y escribe el espacio después de ^. Voy con (3) yo mismo, pero no resulta irritante.
Harald Hanche-Olsen

Respuestas:

11

Con la configuración del teclado, la tecla ^ es probablemente una "tecla muerta". Es una clave destinada a ser utilizada en conjunto con otra, para producir otro personaje. En este caso, está destinado a producir caracteres acentuados: ^ e producirá ê, ^ a producirá â y así sucesivamente.

Sin embargo, no debería ser específico para emacs: supongo que todas sus aplicaciones requieren que presione ^ y que produzca un ^ real en la pantalla.

Para resolver esto, simplemente tiene que usar otra distribución de teclado. En el caso de su diseño alemán en un entorno de Windows, simplemente me referiré a /superuser/280005/how-to-make-and-non-dead-keys-on-windows-7- with-german-keyboard-layout , esperando que esto sea lo correcto.

YoungFrog
fuente
0

Supongo que ha confirmado que el enlace ^en Dired es dired-up-directory, por lo que el comando que se invoca no es el problema, a menos que usted o algo que cargue haya avisado a ese comando. (Use C-h k ^y avísenos si se recomienda el comando).

Has etiquetado esto con microsoft-windows. Quizás mencione qué versión de MS Windows usa. No veo esto con Windows 7 de 64 bits.

¿Ve el mismo comportamiento si inicia Emacs usando runemacs -Q, es decir, sin archivo de inicio? Si es así, por favor dé una receta aquí, comenzando desde runemacs -Q. En ese caso, esto podría ser un error de Emacs.

Si no ve el problema emacs -Q, bisecte recursivamente su archivo de inicio hasta que lo reduzca para encontrar al culpable. Puede usar el comando comment-regionpara comentar la región de código ( C-uúsela para descomentar la región).

Una vez que encuentre el código culpable, puede investigarlo más de cerca. O puede informar aquí lo que ha encontrado, si necesita más ayuda. Para obtener la mejor ayuda, sea lo más específico posible.

En cuanto a la redefinición de la clave: eso no es un problema, solo use (define-key dired-mode-map SOME-KEY 'dired-up-directory), donde SOME-KEYhay una descripción clave. Por ejemplo, para enlazar el comando C-o, puede usar esto:

(define-key dired-mode-map (kbd "C-o") 'dired-up-directory)

Actualizado después de su comentario y otros -

Como ve lo mismo emacs -Q, el problema es algo en su configuración de MS Windows (es decir, fuera de Emacs) o un error en el propio Emacs.

Pero otros comentarios dejan en claro que el problema parece ser teclas pegajosas en MS Windows. Intente apagar las teclas adhesivas .

Dibujó
fuente
3
Es casi seguro que no viene al caso. Sin embargo, el comentario de @wasamasa es totalmente relevante. Para explicar un poco, el punto es que dado que ^ es pegajoso, emacs ni siquiera ve el evento de pulsación de tecla hasta que el usuario escribe un espacio.
Harald Hanche-Olsen
¡Gracias por tu respuesta detallada! Sí, con runemacs.exe -Qeso es lo mismo. Escribir ^ en un búfer solo ingresa el carácter, si luego escribo <space> u otra tecla. Lo mismo en el diredmodo, necesita ^1 <space>moverse hacia arriba. Para define-key: pero me gustaría usar la tecla ^ para este enlace, ¿hay alguna forma de evitar que espere <space>?
Mayormente inofensivo
@Harald: ¿qué puedo hacer?
Mayormente inofensivo