Cómo asignar un atajo de terminal desde CTRL-M a otra combinación

Cómo asignar un atajo de terminal desde CTRL-M a otra combinación

Leí en otra publicación que puedes escribir CtrlJo CtrlMen lugar de la Returnclave en la terminal, lo cual es genial. Pero lo que quiero poder hacer es cambiar eso a otra combinación, por ejemplo: Ctrlspacebar. Intenté reasignar la F1clave, sin éxito.

es posible?

Respuesta1

Depende de lo que quieras hacer exactamente.

Los terminales tienen dos modos principales, los cuales se pueden ajustar con configuraciones adicionales:

  1. Modo cocido/canónico. En ese modo, el terminal viene con un editor de línea interno donde los caracteres ^H(o ^?) ^W, ^U(o @), ^V(o \) se pueden usar para editar la línea. No se envía nada a la aplicación que lee desde el dispositivo terminal hasta que ^Jse recibe el carácter.
  2. crudomodo. Donde cada carácter está disponible para ser leído en la aplicación que lee el dispositivo terminal tan pronto como se escribe, o después de un retraso o después de que se hayan ingresado tantos, según eltiempoymín.parámetros, pero en cualquier caso, no con ese editor de líneas interno.

En ambos casos, el ^Mcarácter (CR) puede traducirse automáticamente a ^J(LF) (o ignorarse para aquellos terminales que envían tanto CR como LF al presionar Enter).

El primer modo es el modo predeterminado del terminal. El segundo modo es utilizado por aplicaciones como zsh, basho vique quieren tomar el control de la edición de líneas.

En el primer modo, no puede cambiar qué carácter se utiliza para aceptar la línea.

Pero es posible que puedas decirle a tu terminal que envíe el ^Jcarácter al presionar esta o aquella tecla. Por ejemplo, con xterm, puede usar el translationsrecurso X11 para cambiar la asignación de teclas y decirle que envíe lo que desee al presionar una tecla determinada. Si su terminal no admite la reasignación del teclado, aún puede usar GNU screenpara hacer la traducción por usted. Por ejemplo, si tu terminal envía la ^[OPsecuencia de caracteres al pulsar F1, puedes añadir

bindkey \033OP "\012"

a tu ~/screenrcpara decirle que envíe LF cuando presionesF1

Para el segundo caso, que es donde las aplicaciones toman el control de la entrada, aún puede usar el mismo enfoque que el anterior, pero también puede configurar cada aplicación individual para que haga esto y aquello cuando presioneF1

Por ejemplo, con zsh, el carácter LF está vinculado al accept-line zshwidget. Podrías hacerlo:

bindkey "^[OA" accept-line

tener que F1vincularse a ese mismo widget.

Tenga en cuenta que Ctrl+Spacenormalmente envía el carácter NUL al que puede referirse como \0o ^@.

información relacionada