Como vincular <Control> <Arrowkey> no Mutt?


9

Estou preso aqui:

É possível vincular um dos <enter>, <backspace>, <up>, <down>, <left>, <right>itens ao controle?

\C<foo>aparece como |foo>na ajuda e ^<up>não está vinculado.
'\C<foo>, '\C <foo>'também não funciona (o mesmo com ").

<control> não existe.

Você realmente pode começar ^<foo>a mostrar-se na ajuda, mas só se você mapear ^<foo>, que não é exatamente o que eu quero. ;)

Respostas:


5

Primeiro, você precisa determinar se o seu terminal envia sequências de escape diferentes para essas combinações de teclas. Os aplicativos executados nos terminais obtêm caracteres como entrada, não como chaves. As teclas de função são codificadas como caracteres de controle ou como seqüências de escape começando com o caractere de escape (que você pode escrever como \eem uma ligação de tecla).

Para ver a sequência de escape enviada por uma combinação de teclas em um terminal, pressione Ctrl+ Vno prompt do shell e, em seguida, pressione a combinação de teclas. Por exemplo, se eu pressionar Ctrl+ V Ctrl+ Leftem um prompt de shell, eu vejo ^[O5D. ^[é o caractere de escape, então eu precisaria vincular o \eO5DMutt para fazê-lo reagir ao Ctrl+ Left:

bind editor \eO5D backward-word

Alguns terminais enviam a mesma sequência de escape para a mesma chave com diferentes modificadores. Se for esse o caso, você precisará descobrir como alterar o comportamento do terminal ou mudar para um terminal diferente.


Parece bom, mas não funciona. \eé a chave de escape, e não o caractere de escape ...
Profpatsch

@ Profofatsch Estranho, essa ligação funciona para mim. Eu uso o Mutt 1.5 desde sempre, talvez 1,4 funcione de maneira diferente? Funciona se você usar \euma macro macro editor \e[O5D \eb:?
Gilles 'SO- stop be evil'

1
Estou no Terminator, quando acerto Ctrl+Down, recebo ^[[1;5B, não funciona bind index \e[1;5B commande também não \e1;5B . Ah, eu trabalho com o Mutt 1.5.21 (Arch.;) #
Profpatsch

1
@ Profofatsch Ok, eu posso reproduzir isso. Parece haver uma limitação para 5 caracteres: bind editor \e[1\;5 backward-wordfunciona para mim (e insere um extra Dquando entro ESC [ 1 ; 5 D), mas bind editor \e[1\;5D backward-wordresulta em ESC [ 1 ; 5 Dnada. Vejo uma limitação para 8 caracteres no código-fonte ( MAX_SEQ), mas nada que seria acionado em 5 caracteres.
Gilles 'SO- stop be evil'

@Profpatsch Uma solução alternativa seria fazer o seu terminal enviar seqüências mais curtas. Não sei se o Terminator suporta isso.
Gilles 'SO- stop be evil'

15

Encontrei a resposta correta aqui :

Mutt interno, use o comando

:exec what-key

Em seguida, pressionando a tecla desejada (como Ctrl + seta), você pode aprender como fazer referência a qualquer tecla. No meu caso, recebo o <C-Up>Ctrl + Up.


4
Caso você tenha conseguido usar :exec what-keypara obter essas informações, mas não tenha conseguido descobrir "qual tecla" pressionar para sair do what-keycomando, a sequência de teclas a sair é Ctrl-g.
KDN 28/01

@KDN: Obrigado. Estava ficando um pouco embaraçoso. ;)
Teekin 13/06/19

O @KDN Ctrl-gé usado para cancelar comandos no emacs e em muitos shells unix.
Jangid
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.