Backspace non funziona in Cygwin


29

Ho appena installato Cygwin e la funzionalità BACKSPACE non è presente, ovvero quando premo il tasto Backspace, ottengo uno spazio.

Ho cercato di cercare questo problema su Google, ma non ho trovato nulla di conclusivo.


Puoi fornire maggiori dettagli su come hai installato e invocato Cygwin e dove esattamente la chiave backspace non funziona?
ak2,

1
Immagino che questo stia succedendo nel guscio. Cosa succede quando si digita control-V seguito da backspace? E qual è l'output del sttycomando?
Keith Thompson,

Che tipo di tastiera hai? Stati Uniti, Regno Unito ecc.
pjc50,

hai mai risolto questo? Lo vedo ora sulla mia nuova installazione di Cygwin, anche se in precedenza ha funzionato. Vale la pena notare che non si ottiene "uno spazio": non riesce a spostare indietro il cursore per cancellare il personaggio. Lo spazio che stai vedendo è lo spazio che doveva calpestare il personaggio precedente. Se premi ^ L puoi vedere che il backspace sta funzionando. Questo è il motivo per cui stty non sta riparando le cose. È quasi come se la shell CMD a cui Cygwin è legato non riesca a interpretare il movimento del cursore.
SomeCallMeTim

Risposte:


33

Nel mio caso il backspace non funzionava affatto dopo aver creato il vuoto ~ / .vimrc. In seguito al cambiamento ha funzionato

Mettere:

impostare bs = 2

in .vimrc

L'ho trovato su http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html


Grazie, questo ha funzionato per me - in precedenza, in Vim, il mio tasto backspace si spostava indietro lungo la linea ma non cancellava le lettere finché non ho iniziato a digitare. Ora fa il "solito" backspace.
Robert,

4
È bello che questa risposta abbia aiutato alcuni altri utenti, ma in questo caso non è la soluzione alla domanda poiché la domanda originale non fa domande su VIM.
Kelsin

Questo risolse anche un problema simile che stavo riscontrando con i tasti cursore
Steve Paul,

12

Ha funzionato per me: nel prompt dei comandi di Windows, digitare

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

Questo lo aggiungerà al .bashrce tutto potrebbe funzionare bene!


1
Ho TERMimpostato la variabile di ambiente msystramite le impostazioni della variabile di ambiente di Windows come suggerito su StackOverflow per aiutare con gitproblemi su Windows. La semplice reimpostazione su cygwinin .bashrcnon ha aiutato, ma ha rimosso la TERMvoce dalle impostazioni di Windows. Grazie per avermi indicato nella giusta direzione!
Florian Brucker,

Ciò ha risolto il fatto che cygwin64 ignorava i backspaces nei comandi contenenti interruzioni di riga. Grazie.
suanik,

11

Ho trovato una soluzione a un problema che si presentava come quello sopra.

Basta eseguire nuovamente l'installazione di Cygwin e reinstallare termcape terminfo. Se si utilizza la casella di ricerca, è possibile trovarli rapidamente. Invece di dire "Mantieni" per ciascuno, fai clic per farlo dire "Reinstalla". Potrebbe essere necessario selezionare la casella di controllo "Nascondi obsoleto" per termapparire nella ricerca.

La mia cartella terminfo era completamente mancante. Non ho idea del perché. Spero che questo aiuti qualcuno.


1
Avevo un ncurses installato personalizzato, che ho rimosso. Dopo aver rimosso e reinstallato tramite cygwin setup.exe ho riscontrato questo problema. Non voglio applicare un cerotto impostando le variabili TERM su qualcosa di diverso da quello che stava funzionando prima del mio incidente. Reinstallare terminfo (non riuscivo a trovare termcap) ha funzionato per me. Grazie!
Kelsin

bello, funziona, ma perché ?!
Yordan Georgiev,

5

Modifica il tuo c: \ cygwin \ cygwin.bat

Posiziona questo: SET TERM=cygwin

prima: bash --login -i


1
Di gran lunga la soluzione più semplice. Spero non ci siano effetti collaterali.
RomanSt

1

Quando si imposta il tipo TERM, si indica all'host quale TERMCAP utilizzare per disegnare nella finestra del terminale. La maggior parte degli host * NIX non sa cosa sia un termine "cygwin", quindi non sa come manipolare i caratteri sullo schermo come inserti, eliminazioni, pergamene, cambi di carattere, ecc.

Se cambi la variabile TERM in CYGWIN prima di telnet o SSH in un host otterrai risultati molto migliori:

In 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
$_

L'host ora sa che hai un tipo di terminale ANSI e può usare il suo file TERMCAP ANSI per dirgli come comunicare.

Se non riesci a farlo funzionare e quasi tutto funziona correttamente tranne il backspace, puoi riprogrammare "getty" sull'host a cui ti connetti per riconoscere ciò che vuoi, ed ecco come (questo è il più vecchio, il più comune e il più universale modo di risolvere backspace / eliminare problemi):

Si ssh o telnet al proprio host e nell'host si esegue il comando stty. Se si preme il tasto "BACKSPACE" e non si torna indietro è perché il terminale sta probabilmente cercando un carattere diverso in base al tipo TERM. Invece di esaminare tutto ciò, puoi impostare manualmente la definizione di backspace nella CLI o nel tuo file .profile, .bashrc o .bash-profile nella tua directory $ HOME come desideri o in base al sapore di * NIX che sei utilizzando.

Quindi se premi ^ H (che è CONTROL-H) e il tuo tasto esegue il backup ma premi il tasto BACKSPACE e non prova a usare stty come segue:

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

Il più delle volte sembrerà così:

stty erase \^?[ENTER]

"\" Dice che il prossimo personaggio sarà un personaggio di controllo non stampabile e lo accetterà, non "interpretandolo".

Dopo aver premuto [INVIO] dovresti essere in grado di premere il tasto [BACKSPACE] e farlo tornare indietro / cancellare qualunque cosa tu abbia digitato.

Puoi impostarlo nella tua shell.

Ora, se usi ancora VI, a volte la traduzione non funziona e devi effettivamente digitare ^ H in vi, ma va bene.

Avresti potuto dire:

stty erase k [INVIO]

e avrebbe letteralmente tradotto 'k' nel carattere di cancellazione / cancellazione ..

-D


0

Ok, ho avuto questo problema con l'aggiornamento manuale di un'installazione Cygwin. Comunque ho trovato questo post , che mi ha portato alla soluzione per la mia installazione.

Il cygwin più vecchio aveva un file /etc/terminfo/c/cygwin, ma nel cygwin più recente si aspettava che fosse il file /etc/terminfo/63/cygwin.

Una volta copiato il file "cygwin" in questa posizione, il tasto backspace della shell bash ha funzionato bene, così come tab e altri.


0

La modifica della TERMvariabile in cygwine l'aggiunta SET TERM=cygwinal .batfile non ha funzionato per me, ma l'ho risolto. Ecco cosa ho fatto: In Gestione pacchetti a causa dell'installazione ho scelto di installare xterm: X11 terminal emulator, dopo l'installazione ho aggiunto SET TERM=xtermil .batfile (come proposto sopra), ho lanciato il terminale e in Opzioni -> Menu Terminale selezionato Type=xterm, quindi ho riavviato il terminale. Backspace ha iniziato a funzionare correttamente!

Nota: se hai già installato Cygwin, esegui di nuovo il programma di installazione e aggiungi il pacchetto xterm.

Sto correndo:

  • Sistema operativo = Windows 8 (x64)
  • Cygwin setup.exe versione = 2.850 (x64)
  • Versione Mitty = 1.2-beta1 (x86_64-pc-cygwin)


0

Ha funzionato per me: nel prompt dei comandi di Windows, digitare

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

Questo lo aggiungerà al .bash_profile (non .bashrc, che non ha funzionato per me, e con un'interruzione di linea principale)


0

Dopo aver trascorso 2 giorni a leggere materiale online. Ho trovato questo che ha funzionato per me. Non so se questo caso corrisponda a tutti. Ma ha funzionato come un incantesimo per me grazie a Yuksel

Il problema era con i file 'termInfo', passaggi che ha suggerito

  1. confermare se il problema è correlato al terminale digitando CygWin Terminal, questo dovrebbe dare (ignorare l'avvertimento)

    less my_session.log

ATTENZIONE: il terminale non è completamente funzionante

  1. Ottieni le informazioni di 'TermCap' a quale percorso o directory è correlato digitando il codice seguente nel Terminale CygWin

    infocmp -C

dovresti o prendere

infocmp: impossibile aprire il file terminfo / usr / share / terminfo / 63 / cygwin

Oppure potresti anche ottenere qualcosa che inizia con un testo come "Ricostruito tramite infocmp ..."

  1. Eseguire il codice seguente in CygWin Terminal per eseguire la diagnostica per ottenere ulteriori dettagli sul percorso in cui vengono salvati i file

    cygcheck -s

che dovrebbe risponderti in modo simile al testo seguente

Diagnostica configurazione Cygwin

...

C: / cygwin / system binary, noacl

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

C: binario di sistema / cygwin / lib / usr / lib, noacl

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

prefisso cygdrive / binario utente cygdrive, noacl, posix = 0, auto

...

  1. controlla per linea simile a

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

dall'output, hai ottenuto dal 3 ° passaggio. ora copia tutti i file e le cartelle presenti in / usr / share / terminfo nella cartella C: \ cygwin \ etc \ terminfo - NOTA: questa cartella potrebbe essere diversa dalla tua a seconda dell'installazione


0

Si prega di seguire l'immagine qui sotto inserisci qui la descrizione dell'immagine

  1. Fare clic con il tasto destro in qualsiasi punto della finestra di Cygwin
  2. Clic options
  3. Fai clic sulla Keysscheda
  4. zecca Backarrow sends ^H
  5. Premi applica.

Questa è l'unica cosa che ha funzionato per me, soprattutto perché se devi SSH su un server (non tutte le correzioni funzioneranno), aggiungevo stty erase ^?al mio .bashrc, ma questo risolveva il problema solo l'80% delle volte.


-1

Non ho mai avuto problemi. Prova a installare Terminal Emulator Mintty ( http://code.google.com/p/mintty/ ).

È disponibile tramite il programma di installazione di Cygwin. Il miglior terminale per Cygwin.


Questo non ha aiutato.
user620189

Anche io sono bloccato sullo stesso problema e da menta anche la funzionalità di backspace non funziona. Ottengo spazio quando colpisco backspace sia sul terminale di menta che su quello di Cygwin
Rachel,

@ Rachel Hai mai risolto questo? Riscontro lo stesso problema con una nuova installazione di Cygwin. :(
SomeCallMeTim

@SomeCallMeTim: Sono stato in grado di risolvere questo problema utilizzando Minty, a volte cygwin si comporta in modo molto strano.
Rachel,

@Rachel Grazie, anche se ho scoperto che il mio problema era che l'installazione di Cygwin mancava alcuni file importanti (come / usr / lib / terminfo). Non so perché fossero scomparsi; trovato qualcun altro con quel problema, è andato in setup e ha detto a terminfo e termcap di reinstallare, e tutto ha funzionato.
SomeCallMeTim
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.