Como mapear o atalho de terminal de CTRL-M para outra combinação

1

Eu li em outro post que você pode digitar Ctrl J ou Ctrl M em vez do Tecla Return no terminal, o que é ótimo. Mas o que eu quero ser capaz de fazer é mudar isso para outra combinação, por exemplo: Ctrl barra de espaço . Eu tentei remapear a tecla F1 , sem sucesso.

Isso é possível?

    
por mserinjane 23.04.2013 / 13:22

1 resposta

3

Depende exatamente o que você quer fazer.

Os terminais

possuem dois modos principais que podem ser ajustados com ajustes extras:

  1. modo cozido / canônico. Nesse modo, o terminal vem com um editor interno de linhas, onde os caracteres ^H (ou ^? ), ^W , ^U (ou @ ), ^V (ou \ ) podem ser usado para editar a linha. Nada é enviado para a leitura do aplicativo do dispositivo terminal até que o caractere ^J seja recebido.
  2. Modo raw . Onde cada caractere estiver disponível para leitura no aplicativo lendo o dispositivo terminal assim que for digitado, ou após um atraso ou depois de tantos terem sido inseridos dependendo do tempo e min parâmetros, mas em qualquer caso, não com esse editor de linha interna.

Em ambos os casos, o caractere ^M (CR) pode ser traduzido automaticamente para ^J (LF) (ou ignorado para os terminais que enviam CR e LF ao pressionar Enter).

O primeiro modo é o modo padrão do terminal. O segundo modo é usado por aplicativos como zsh , bash ou vi que desejam assumir o controle da edição da linha.

No primeiro modo, você não pode alterar qual caractere é usado para aceitar a linha.

Mas você pode dizer ao seu terminal para enviar o caractere ^J ao pressionar essa ou aquela tecla. Por exemplo, com xterm , você pode usar o recurso translations X11 para alterar o mapeamento de chaves e dizer a ele para enviar o que quiser em uma determinada tecla pressionada. Se o seu terminal não suporta o remapeamento do teclado, você ainda pode usar o GNU screen para fazer a tradução para você. Por exemplo, se o seu terminal enviar a seqüência de caracteres ^[OP ao pressionar F1 , você poderá adicionar

bindkey 3OP "2"

para o seu ~/screenrc para dizer para enviar LF quando você pressionar F1

Para o segundo caso, é onde os aplicativos assumem o controle da entrada, você ainda pode usar a mesma abordagem acima, mas também pode configurar cada aplicativo individual para fazer isso e quando pressionar F1

Por exemplo, com zsh , o caractere LF é ligado ao widget accept-line zsh . Você poderia fazer:

bindkey "^[OA" accept-line

ter F1 ligado ao mesmo widget.

Note que Ctrl + Space geralmente envia o caractere NUL ao qual você pode se referir como ^@ ou %code% .

    
por 23.04.2013 / 14:31