Rebinding “clear prompt” no vira-lata

9

Por padrão, ao inserir informações no prompt de comando em mutt , você pode limpar o prompt com Ctrl g , conforme descrito em o manual :

^G              n/a             abort

Eu tenho tentado associar essa função a Escape . Infelizmente, abort não está listado nas funções disponíveis, seja no manual , ou na fonte .

Eu tentei usar isso no meu .muttrc :

bind editor <esc>       abort

mas gera um erro:

Error in /home/jason/.mutt/muttrc, line 143: abort: no such function in map

Eu tentei usar um mapa diferente, como ( generic ) e experimentei outras funções fictícias, como clear , sem sucesso.

Como eu ligaria Escape para limpar a linha de prompt?

    
por jasonwryan 11.09.2012 / 05:17

3 respostas

5

Não é possível com associações de teclas. Ctrl-G é codificado no mutt em um nível mais baixo que o processamento de macro ou keybinding (veja mutt_getch() no código-fonte do mutt, no núcleo de todas as entradas do usuário no mutt que retorna um erro em ^G ).

macro editor \e '^G'

também não funcionaria.

O que você pode fazer é configurar seu terminal para enviar ^G ao pressionar Escape

Com o xterm:

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

Se você estiver usando screen , você também pode fazer

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

antes de chamar o mutt e restaurá-lo depois (infelizmente, não parece que você pode ter ligações de janela por tela na tela). Além disso, será um problema se o seu editor de mensagens de e-mail for vi.

    
por 11.09.2012 / 11:31
2

Parece uma idéia muito ruim para eu ligar o escape ao Control G também. Eu vim aqui procurando uma solução mutt, mas como parece que não há nenhuma, eu darei uma resposta do que estou fazendo para qualquer um que por acaso tropeçar nisso. Não é o ideal, mas não afeta outros programas:

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

ou

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

Usar algo como xdotool ou xsendkey para falsificar o controle + g funciona e não atrapalha a fuga em qualquer outro lugar. Há um atraso visual para que ele saia do editor de linhas, mas as vinculações de índice funcionarão imediatamente e o atraso visual desaparecerá assim que você usar uma vinculação de índice. A primeira entrada é necessária para que o mutt não apenas digite "...." e torne isso em um cabeçalho ou termo de pesquisa ou algo assim.

    
por 27.04.2014 / 07:27
0

Esta solução é tão ruim que o autor preferiu editar o código-fonte do Mutt para se livrar de ^ G

Aviso: Esta solução parece incompatiple com o OSX, Emacs e outras aplicações que usam Ctrl + G

Depois do meu primeiro dia no Mutt, eu estava quase usando o ^ G no Vim por engano ... Então eu tentei algo que parece funcionar aqui, no gerenciador de janelas i3 e xfce-terminal .

Adicionou esta linha a ~/.i3/config :

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

Tive que usar "\[Escape]\[Control]\[g]" porque somente "\[Control]\[g]" fez com que parasse de funcionar no Vim.

Se você não está usando o i3, eu acho que você pode usar xbindkeys para executar xvkbd -xsendevent -text "\[Escape]\[Control]\[g]" quando Esc é pressionado.

Não é uma solução bonita ... Pode fazer com que a sua chave Esc seja inutilizável em alguns programas, mas pelo menos aqui parece ok.

EDITAR:

Eu vejo agora que a parte Ctrl + G faz com que o Vim mostre a posição no arquivo. Nada muito dramático, por enquanto.

Este link parece ter uma solução melhor, mas para urxvt : link

    
por 25.04.2014 / 07:20