Li em outro post que você pode digitar CtrlJou CtrlMno lugar da Returnchave no terminal, o que é ótimo. Mas o que eu quero poder fazer é mudar isso para outra combinação, por exemplo: Ctrlspacebar. Tentei remapear a F1chave, sem sucesso.
Isso é possível?
Responder1
Depende do que exatamente você deseja fazer.
os terminais têm dois modos principais, ambos os quais podem ser ajustados com configurações extras:
- modo cozido/canônico. Nesse modo, o terminal vem com um editor de linha interno onde os caracteres
^H
(ou^?
),^W
,^U
(ou@
),^V
(ou\
) podem ser usados para editar a linha. Nada é enviado para a leitura do aplicativo do dispositivo terminal até que o^J
caractere seja recebido. - crumodo. Onde cada caractere está disponível para leitura para o aplicativo que lê o dispositivo terminal assim que é digitado, ou após um atraso ou após tantos terem sido inseridos dependendo dotempoeminparâmetros, mas em qualquer caso, não com aquele editor de linha interno.
Em ambos os casos, o ^M
caractere (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 ^J
caractere ao pressionar esta ou aquela tecla. Por exemplo, com xterm
, você pode usar o translations
recurso X11 para alterar o mapeamento de teclas e solicitar que ele envie o que quiser ao pressionar uma determinada tecla. Se o seu terminal não suportar o remapeamento do teclado, você ainda poderá usar o GNU screen
para fazer a tradução para você. Por exemplo, se o seu terminal envia a ^[OP
sequência de caracteres ao pressionar F1, você pode adicionar
bindkey \033OP "\012"
para você ~/screenrc
dizer para enviar LF quando você pressionarF1
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 aquilo quando você pressionaF1
Por exemplo, com zsh
, o caractere LF está vinculado ao accept-line
zsh
widget. Você poderia fazer:
bindkey "^[OA" accept-line
para vincular F1-se ao mesmo widget.
Observe que Ctrl+Spacegeralmente envia o caractere NUL, ao qual você pode se referir como \0
ou ^@
.