Bash: eu quero digitar um til. Pressionando F10 me dá '1 ~' em vez de apenas '~'

0

Anteriormente, eu era capaz de produzir o símbolo do til no meu terminal bash pressionando F10. Agora, quando pressiono F10, recebo dois caracteres: '1 ~'. O mesmo vale para F9 / F11 / F12. Estranhamente, as outras teclas de função F1-F8 me dão um til, mas eu quero que a F10 seja minha tecla de til.

Alguma idéia de como corrigir isso?

    
por user3055163 19.09.2018 / 10:20

3 respostas

8

Nenhuma dessas chaves são chaves de til. Todos eles geram uma sequência de múltiplos caracteres, como ESC [24~ para a tecla F12 , ou ESC [15~ para a tecla F5 (embora F1 – F4 sejam ligeiramente diferente), ou mesmo ESC [5~ para a tecla PgUp .

A única razão pela qual você recebe um til é porque o analisador de seqüência de chaves do Bash consome a parte comum que ele conhece ( ESC [2 ) e para assim que ele sabe que a sequência completa será desconhecida. Tudo o que se segue (não necessariamente um til!) É interpretado separadamente.

Note que este comportamento pode diferir entre programas baseados em terminal: Bash (readline) tem seu próprio código para interpretar chaves especiais, o Vim possui o seu próprio, o Irssi tem o seu próprio novamente. Alguns programas podem reconhecer totalmente seu keypress como F10 (e, portanto, ignorá-lo).

Para tornar F10 uma chave de til real globalmente (todo o sistema operacional), procure por ferramentas de "remapeamento de chave" (talvez AutoHotkey).

Para fazer F10 uma tecla til em todos os programas baseados em terminal , pesquise pelas configurações do terminal. (O 'terminal' neste caso refere-se ao ConEmu.)

O terminal pode ter sua própria funcionalidade para redefinir teclas simples ou, talvez, criar "macros". A documentação do ConEmu sugere definir uma macro com a ação print(…) .

Para tornar F10 uma tecla til no Bash (mas apenas no Bash):

  1. Certifique-se de que seu emulador de terminal (ConEmu) não tenha vinculado a F10 a alguma função própria. (A F10 comum geralmente não está vinculada a nada - no entanto, Shift + F10 é a chave padrão para abrir o menu "clique com o botão direito").

  2. No bash, pressione Ctrl V (inserção literal) e então F10 . Você verá uma sequência como ^[[21~ .

    (A inicial ^[ representa ESC, enquanto o resto é apenas um símbolo literal.)

    Se, neste ponto, a chave não inserir nenhuma sequência , , significa que ela foi assumida pelo próprio terminal ou por outro programa - volte ao passo 1.

  3. Abra (ou crie) o arquivo ~/.inputrc em um editor de texto.

  4. Adicione esta linha, tomando a sequência da etapa 2 e substituindo ^[ por \e :

    "\e[21~": "~"
    

    Isso diz ao inputrc para inserir um ~ ao receber ESC [21~ .

  5. Reabra o shell Bash (ou pressione Ctrl X , Ctrl R para recarregar o inputrc) .

por 19.09.2018 / 10:35
2

Qual layout de teclado você está usando?

Existe uma tecla til dedicada ~ logo acima do Tab no teclado padrão dos EUA.

    
por 19.09.2018 / 10:22
-1

Eu consertei esta minha remoção ~ .inputrc que não tinha nada útil nela de qualquer maneira.

    
por 19.09.2018 / 13:55