Bash backspace apagando uma palavra de cada vez

3

Existe um servidor no meu trabalho que usa o csh como o shell padrão. Eu prefiro bash, então sempre que eu faço login, inicio bash .

Mas, por algum motivo, o botão de retrocesso exclui palavras completas em vez de excluir apenas caracteres. Por que é que? Como faço para mudar isso e ter o Bksp delete char por char ??

FYI, Shift + Bksp exclui caractere por caractere. Se possível, eu gostaria de ter Shift + Bksp deletar palavra por palavra. Só se possível.

Obrigado

PS: Por favor, não me diga para segurar a tecla Shift; é absolutamente chato.

    
por Here Be Wolves 26.10.2010 / 07:51

1 resposta

3

Alguns terminais enviam ^h (caractere número 8) para a tecla BackSpace , e alguns enviam ^? (número de caractere 127). Muitos emuladores de terminal podem ser configurados e a maioria dos programas pode ser configurada para saber qual chave deve ser esperada. Obviamente, os dois lados devem concordar.

Stty é uma maneira em que os aplicativos podem consultar a configuração do terminal. erase = ^? significa que o arquivo de descrição do terminal no servidor afirma que quando o terminal envia ^? , significa “apagar o caractere anterior”. werase = ^? significa que ^? significa “apaga a palavra anterior”. Há uma contradição entre essas duas configurações.

Quando você efetua login no ssh, o cliente ssh envia um nome para o terminal, que é colocado na variável de ambiente TERM . Programas no servidor, em seguida, procurar descrições do terminal em um banco de dados (chamado termcap ou terminfo). Se essas descrições forem interrompidas ou se um arquivo de configuração em algum lugar (como /etc/profile ou ~/.login ou ~/.bashrc ) anular as descrições com dados incorretos, você poderá achar que há uma incompatibilidade. Por exemplo, uma possível fonte para o seu problema é se algum arquivo de inicialização contiver o comando stty werase '^?' (forçando ^? a significar uma palavra apagada) enquanto seu terminal envia ^? para a tecla de retrocesso.

Idealmente, você deve corrigir o conflito, pois muitos programas lerão essas informações.

No Putty, você pode configurar qual de ^? ou ^h a tecla BackSpace envia. Verifique o valor dessa configuração. Talvez a maneira mais fácil de resolver seu problema seja fazer com que Putty envie ^h para BackSpace e verifique se o servidor usa essa configuração ( stty erase '^h' , para colocar em ~/.bashrc , forçá-lo ).

    
por 28.10.2010 / 23:21

Tags