Backspace não funciona no Cygwin

28

Acabei de instalar o Cygwin e a funcionalidade BACKSPACE não está lá, ou seja, quando pressiono a tecla Backspace, recebo um espaço.

Estou tentando pesquisar esse problema no Google, mas não encontrei nada conclusivo.

    
por user620189 30.08.2011 / 16:01

11 respostas

34

No meu caso, o backspace não funcionava de forma alguma depois de criar ~ / .vimrc em branco. Após a mudança, funcionou

Coloque:

definir bs = 2

em .vimrc

Encontrei isto em link

    
por 04.08.2012 / 23:35
11

Eu encontrei uma solução para um problema apresentado como o acima.

Simplesmente execute a instalação do Cygwin novamente e reinstale termcap e terminfo . Se você usar a caixa de pesquisa, poderá encontrá-los rapidamente. Em vez de dizer "Keep" para cada, clique nele para dizer "Reinstalar". Pode ser necessário marcar a caixa de seleção "Ocultar Obsoleto" para que term apareça na pesquisa.

Minha pasta terminfo estava totalmente ausente. Não faço ideia do porquê. Espero que isso ajude alguém.

    
por 20.03.2012 / 00:30
9

Trabalhou para mim: no prompt de comando do Windows, digite

echo export TERM=cygwin >> C:/cygwin/home/YourUser/.bashrc

Isto irá adicioná-lo ao .bashrc e tudo poderá funcionar bem!

    
por 30.01.2013 / 06:06
5

Edite seu c: \ cygwin \ cygwin.bat

Coloque isto: SET TERM=cygwin

antes: bash --login -i

    
por 03.12.2013 / 14:46
1

Quando você define o tipo TERM, você está dizendo ao host qual TERMCAP usar para desenhar na janela do terminal. A maioria dos hosts * NIX não sabe o que é um tipo de termo 'cygwin' para que eles não saibam como fazer a manipulação de caracteres na tela, como inserções, exclusões, rolagens, mudanças de fonte, etc.

Se você alterar a variável TERM no CYGWIN antes do telnet ou do SSH para um host, obterá resultados muito melhores:

No CYGWIN:

d@test01 ~
$ TERM=ansi;export TERM
$ ssh suntest1

d@suntest1's password:
Sun Microsystems Inc.  SunOS 5.8     Generic patch    October 2001

d   pts/1         test01    Fri   Oct 12  00:15   still logged in
$ echo $TERM
ansi
$_

O host agora sabe que você tem um tipo de terminal ANSI e pode usar o arquivo ANSI TERMCAP para informar como se comunicar.

Se você não consegue fazer isso funcionar e quase tudo funciona corretamente, exceto o backspace, você pode reprogramar o "getty" no host ao qual se conecta para reconhecer o que deseja, e aqui está como (este é o mais antigo, mais comum e a maneira mais universal de resolver problemas de retrocesso / exclusão):

Você ssh ou telnet para seu host e no host você executa o comando stty. Se você apertar a tecla "BACKSPACE" e ela não for para trás, é porque o terminal provavelmente está procurando por um caractere diferente baseado no tipo TERM. Em vez de pesquisar tudo isso, você pode definir manualmente a definição de backspace na CLI ou em seu arquivo .profile, .bashrc ou .bash-profile no diretório $ HOME desejado ou com base no sabor do * NIX que você é usando.

Portanto, se você pressionar ^ H (que é CONTROL-H) e sua chave fizer backup, mas você pressionar a tecla BACKSPACE e ela não tentar usar stty da seguinte maneira:

stty erase \*<HIT YOUR BACKSPACE KEY HERE>*[ENTER]

Na maioria das vezes, será assim:

stty erase \^?[ENTER]

O '\' diz que o próximo caractere será um caractere de controle não imprimível e para aceitá-lo, não "interpretá-lo".

Depois de pressionar [ENTER], você poderá pressionar a tecla [BACKSPACE] e fazer com que ela retroceda / exclua o que você digitou.

Você pode definir isso no seu shell.

Agora, se você ainda usa o VI, às vezes a tradução não funciona e você precisa digitar ^ H no vi, mas tudo bem.

Você poderia ter dito:

stty erase k [ENTER]

e ele literalmente teria traduzido 'k' para o caractere de apagar / apagar ...

-D

    
por 12.10.2018 / 06:11
0

Ok, eu tive esse problema com a atualização manual de uma instalação do Cygwin. De qualquer forma eu encontrei este post , que me leva à solução para o meu instalar.

O cygwin antigo tinha um arquivo /etc/terminfo/c/cygwin , mas no novo cygwin esperava que o arquivo fosse /etc/terminfo/63/cygwin .

Depois que copiei o arquivo "cygwin" para esse local, a tecla backspace do bash funcionou bem, assim como a guia e outros.

    
por 29.05.2014 / 02:44
0

Alterar a variável TERM para cygwin e adicionar SET TERM=cygwin ao arquivo .bat não funcionou para mim, mas eu corrigi-lo. Aqui o que eu fiz: No gerenciador de pacotes devido instalação eu selecionei para instalar xterm: X11 terminal emulator , após a instalação eu adicionei SET TERM=xterm para o arquivo .bat (como proposto acima), terminal aberto e em Opções - > O menu Terminal selecionou Type=xterm , depois reiniciou o terminal. Backspace começou a funcionar corretamente!

Nota: se você já instalou o cygwin - apenas execute o instalador novamente e adicione o pacote xterm.

Estou correndo:

  • SO = Windows 8 (x64)
  • Cygwin setup.exe versão = 2.850 (x64)
  • Versão Mitty = 1.2-beta1 (x86_64-pc-cygwin)
por 04.08.2014 / 13:54
0

Concordo com todas as respostas aqui. Mas há uma maneira muito mais simples encontrada aqui: link

    
por 22.08.2014 / 08:56
0

Trabalhou para mim: no prompt de comando do Windows, digite

(echo; echo "export TERM=cygwin") >> ~/.bash_profile

Isto irá adicioná-lo ao .bash_profile (não ao .bashrc, que não funcionou para mim e com uma quebra de linha líder)

    
por 24.03.2016 / 10:36
0

Depois de passar dois dias lendo material on-line. Eu encontrei este que funcionou para mim. Eu não sei se este caso combina com todos. Mas funcionou como um encanto para mim graças a Yuksel

O problema foi com arquivos 'termInfo', Etapas que ele sugeriu

  1. confirme se o problema está relacionado ao terminal digitando no CygWin Terminal, isso deve dar (ignorar o aviso)

    less my_session.log

WARNING: terminal is not fully functional

  1. Obtenha as informações do 'TermCap' para o caminho ou diretório ao qual ele está relacionado digitando o código abaixo no Terminal CygWin

    infocmp -C

você deve pegar

infocmp: couldn't open terminfo file /usr/share/terminfo/63/cygwin

Ou você também pode receber algo que comece com um texto como "Reconstruído via infocmp ..."

  1. Execute o código abaixo no Terminal CygWin para executar os diagnósticos para obter detalhes adicionais sobre o caminho onde os arquivos são salvos

    cygcheck -s

que deve responder de maneira semelhante ao texto abaixo

Cygwin Configuration Diagnostics

...

C:/cygwin / system binary,noacl

C:/cygwin/bin /usr/bin system binary,noacl

C:/cygwin/lib /usr/lib system binary,noacl

C:\cygwin\etc\terminfo /usr/share/terminfo system binary,noacl

cygdrive prefix /cygdrive user binary, noacl, posix=0, auto

...

  1. confira linha semelhante a

C:\cygwin\etc\terminfo /usr/share/terminfo system binary,noacl

da saída, você obteve o terceiro passo. agora copie todos os arquivos e pastas que existem dentro de / usr / share / terminfo para a pasta C: \ cygwin \ etc \ terminfo - NOTA: esta pasta pode ser diferente da sua dependendo da instalação

    
por 24.08.2018 / 10:43
-1

Nunca experimentou seu problema. Tente instalar o Mintty do emulador de terminal ( link ).

Está disponível através do instalador do Cygwin. Melhor Terminal para cygwin.

    
por 30.08.2011 / 16:11