Rebobinado "aviso claro" en mutt

9

De manera predeterminada, al ingresar información en el símbolo del sistema mutt, puede borrar el mensaje con Ctrlg, como se describe en el manual :

^ G n / a abortar

He estado tratando de vincular esta función Escape. Lamentablemente, abortno figura en las funciones disponibles, ni en el manual ni en la fuente .

He intentado usar esto en mi .muttrc:

editor de enlaces <esc> abortar

pero arroja un error:

Error en /home/jason/.mutt/muttrc, línea 143: abortar: no existe tal función en el mapa

Intenté usar un mapa diferente, como ( generic) y experimenté con otras funciones ficticias, como clear, sin éxito.

¿Cómo me uniría Escapepara borrar la línea de aviso?

jasonwryan
fuente
1
El enlace de escape no es una buena idea ya que el carácter de escape (enviado al presionar escape) también es el prefijo para las secuencias de escape enviadas por todas las teclas de función como flechas, del, F1 ...
Stéphane Chazelas
Ese es un buen punto que no había considerado. Al probarlo, Escape debe enviarse dos veces para enviar un literal, ^[por lo que puede que no sea un showtopper (de todos modos, no uso ningún enlace que dependa de él).
jasonwryan
Esc, Escenviaría dos caracteres ESC. También puede presionar Escuna vez y esperar aproximadamente un segundo (el tiempo de espera predeterminado espera el resto de una secuencia de escape).
Stéphane Chazelas
Si. Primero tengo que averiguar cómo
atarlo

Respuestas:

5

No es posible con las combinaciones de teclas. Ctrl-Gestá codificado en mutt a un nivel más bajo que el procesamiento de macro o combinación de teclas (ver mutt_getch()en el código fuente de mutt, en el núcleo de toda entrada de usuario en mutt que devuelve un error ^G).

macro editor \e '^G'

tampoco funcionaría.

Lo que puede hacer es configurar su terminal para enviar ^Gal presionarEscape

Con xterm:

xterm -xrm 'XTerm.VT100.translations: #override <KeyPress> Escape: string(0x7)'

Si estás usando screen, también puedes hacer

screen -X bindkey $'\e' stuff $'\a'

antes de llamar a mutt y restaurarlo después (desafortunadamente, no parece que pueda tener enlaces de teclas de ventana por pantalla en la pantalla). Además, será un problema si su editor para mensajes de correo electrónico es vi.

Stéphane Chazelas
fuente
Upvoted: porque responde la pregunta (es decir, no es posible). ¿Podría por favor elaborar sobre el "codificado ... en un nivel inferior". Y aunque la solución es ingeniosa, no es realmente práctica ya que uso Escape en muchos otros programas de terminal, de ahí el deseo de vincularlo aquí.
jasonwryan
He editado mi respuesta con más detalles. Me sorprende que haya Esc vinculado en otros programas, ya que generalmente no está en aplicaciones que conozco por la razón mencionada en los comentarios anteriores.
Stéphane Chazelas
2

También me parece una muy mala idea obligarme a escapar ControlG. Vine aquí buscando una solución de mutt, pero como parece que no hay ninguna, daré una respuesta de lo que estoy haciendo por cualquiera que se encuentre con esto. No es óptimo, pero no afectará a ningún otro programa:

macro editor \e "<enter><shell-escape>xdotool key control+g<enter>"

o

macro editor \e "<enter><shell-escape>xsendkey Control+g<enter>"

Usar algo como xdotool o xsendkey para falsificar el control + g funciona y no estropea el escape en ningún otro lado. Hay un retraso visual para que salga del editor de línea, pero los enlaces de índice funcionarán de inmediato y el retraso visual desaparecerá tan pronto como use un enlace de índice. La primera entrada es necesaria para que mutt no solo escriba "...." y lo convierta en un encabezado o término de búsqueda o algo así.

noctuido
fuente
0

Esta solución es tan mala que el autor prefirió editar el código fuente de Mutt para deshacerse de ^ G

Advertencia: esta solución parece incompatible con OSX, Emacs y otras aplicaciones que usan Ctrl+G

Después de mi primer día en Mutt, casi estaba usando ^ G en Vim por error ... Luego intenté algo que parece funcionar aquí, en i3 window manager y xfce-terminal .

Se agregó esta línea a ~/.i3/config:

bindsym --release Escape exec --no-startup-id xvkbd -xsendevent -text "\[Escape]\[Control]\[g]"

Tuve que usarlo "\[Escape]\[Control]\[g]"porque solo "\[Control]\[g]"hizo que dejara de funcionar en Vim.

Si no está usando i3, creo que puede usar xbindkeys para ejecutar xvkbd -xsendevent -text "\[Escape]\[Control]\[g]"cuando Escse presiona.

No es una solución hermosa ... Puede hacer que su Escclave sea inutilizable en algunos programas, pero al menos aquí parece estar bien.

EDITAR:

Ahora veo que la parte Ctrl+ Ghace que Vim muestre la posición en el archivo. Nada demasiado dramático, por ahora.

Este enlace parece tener una mejor solución, pero para urxvt : http://www.unixli.com/q/answers-urxvt-map-esc-key-to-key-sequence-83211.html

alguien
fuente