Bash backspace excluindo uma palavra por vez

Bash backspace excluindo uma palavra por vez

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

Mas, por algum motivo, o botão backspace exclui palavras completas em vez de apenas excluir caracteres. Por que é que? Como faço para alterar isso e fazer com que o Bksp exclua caractere por caractere?

Para sua informação, Shift + Bksp exclui caractere por caractere. Se possível, gostaria que Shift+Bksp excluísse palavra por palavra. Somente se possível.

Obrigado

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

Responder1

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

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

Quando você faz login via ssh, o cliente ssh envia um nome para o terminal, que é colocado na TERMvariável de ambiente. Os programas no servidor procuram descrições do terminal em um banco de dados (chamado termcap ou terminfo). Se essas descrições estiverem quebradas ou se um arquivo de configuração em algum lugar (como /etc/profileou ~/.loginou ~/.bashrc) substituir as descrições por dados errados, você poderá descobrir que há uma incompatibilidade. Por exemplo, uma possível fonte para o seu problema é se algum arquivo de inicialização contém o comando stty werase '^?'(forçando ^?o apagamento de uma palavra) enquanto seu terminal envia ^?a tecla backspace.

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

No Putty, você pode configurar qual ^?chave ^hserá BackSpaceenviada. Verifique o valor desta configuração. Talvez a maneira mais fácil de resolver seu problema seja fazer com que o Putty envie ^he BackSpacecertifique-se de que o servidor use essa configuração ( stty erase '^h', para ser colocado ~/.bashrc, irá forçá-lo).

informação relacionada