Rücktaste funktioniert in Cygwin nicht

29

Ich habe gerade Cygwin installiert und die BACKSPACE-Funktion ist nicht vorhanden. Wenn ich also die Backspace-Taste drücke, bekomme ich ein Leerzeichen.

Ich habe versucht, dieses Problem bei Google zu recherchieren, habe jedoch keine schlüssigen Ergebnisse erhalten.

user620189
quelle
Können Sie näher erläutern, wie Sie Cygwin installiert und aufgerufen haben und wo genau die Rücktaste nicht funktioniert?
Ak2
1
Ich vermute, das passiert in der Shell. Was passiert, wenn Sie control-V gefolgt von der Rücktaste eingeben? Und wie lautet die Ausgabe des sttyBefehls?
Keith Thompson
Was für eine Tastatur hast du? US, UK etc.
pjc50
Haben Sie das jemals gelöst? Ich sehe es jetzt auf meiner neuen Cygwin-Installation, obwohl es zuvor funktioniert hat. Es ist erwähnenswert, dass Sie kein "Leerzeichen" erhalten: Der Cursor kann nicht zurückbewegt werden, um das Zeichen zu löschen. Das Feld, das Sie sehen, ist das Feld, das auf das vorherige Zeichen stampfen sollte. Wenn Sie ^ L drücken, können Sie sehen, dass die Rücktaste funktioniert. Deshalb repariert stty die Dinge nicht. Es ist fast so, als würde die CMD-Shell, an die Cygwin gebunden ist, die Cursorbewegung nicht interpretieren.
SomeCallMeTim

Antworten:

33

In meinem Fall funktionierte die Rücktaste nach dem Erstellen der leeren Datei ~ / .vimrc überhaupt nicht. Nach Änderung hat es funktioniert

Stellen:

setze bs = 2

in .vimrc

Dies finden Sie unter http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html

vaichidrewar
quelle
Vielen Dank, das hat bei mir funktioniert. Früher bewegte sich meine Rücktaste in Vim entlang der Linie, löschte aber die Buchstaben erst, als ich mit der Eingabe begann. Jetzt macht es die "übliche" Rücktaste.
Robert
4
Es ist großartig, dass diese Antwort einigen anderen Benutzern geholfen hat, aber in diesem Fall ist sie keine Lösung für die Frage, da die ursprüngliche Frage nicht nach vim fragt.
Kelsin
Dies löste auch ein ähnliches Problem, das ich mit den Cursortasten hatte
Steve Paul
12

Arbeitete für mich: Geben Sie in der Windows-Eingabeaufforderung

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

Dies fügt es dem hinzu .bashrcund alles kann gut funktionieren!

Marrciovr
quelle
1
Ich habe die TERMUmgebungsvariable msysüber die Einstellungen der Windows-Umgebungsvariablen wie in StackOverflow vorgeschlagen festlegen lassen , um bei gitProblemen unter Windows zu helfen . Das einfache Zurücksetzen auf cygwinin .bashrchat nicht geholfen, das Entfernen des TERMEintrags aus den Windows-Einstellungen jedoch. Danke, dass du mich in die richtige Richtung gelenkt hast!
Florian Brucker
Dies löste die Tatsache, dass cygwin64 in Befehlen, die Zeilenumbrüche enthielten, Leerzeichen ignorierte. Vielen Dank.
Suanik
11

Ich habe eine Lösung für ein Problem gefunden, das sich wie oben dargestellt hat.

Führen Sie einfach das Cygwin-Setup erneut aus und installieren Sie termcapund erneut terminfo. Wenn Sie das Suchfeld verwenden, können Sie sie schnell finden. Anstatt für jedes "Behalten" zu sagen, klicken Sie darauf, damit "Neu installieren" angezeigt wird. Möglicherweise müssen Sie das Kontrollkästchen "Veraltet ausblenden" aktivieren, damit termes in der Suche angezeigt wird .

Mein Terminfo-Ordner fehlte vollständig. Keine Ahnung warum. Hoffe das hilft jemandem.

SomeCallMeTim
quelle
1
Ich hatte eine benutzerdefinierte ncurses installiert, die ich entfernt habe. Nach dem Entfernen und Neuinstallieren über cygwin setup.exe hatte ich dieses Problem. Ich möchte kein Bandaid anwenden, indem ich TERM-Variablen auf etwas anderes setze, als das, was vor meinem Missgeschick funktioniert hat. Die Neuinstallation von terminfo (termcap konnte nicht gefunden werden) hat bei mir funktioniert. Vielen Dank!
Kelsin
cool, funktioniert, aber warum?
Jordan Georgiev
5

Bearbeiten Sie Ihre Datei c: \ cygwin \ cygwin.bat

Platziere dies: SET TERM=cygwin

Vor: bash --login -i

Josef
quelle
1
Die mit Abstand einfachste Lösung. Hoffe, es gibt keine Nebenwirkungen.
RomanSt
1

Wenn Sie den TERM-Typ festlegen, teilen Sie dem Host mit, welches TERMCAP zum Zeichnen im Terminalfenster verwendet werden soll. Die meisten * NIX-Hosts wissen nicht, was ein 'Cygwin'-Termtyp ist, daher wissen sie nicht, wie man Zeichen auf dem Bildschirm manipuliert, z.

Wenn Sie die TERM-Variable in CYGWIN vor Telnet oder SSH auf einen Host ändern, erhalten Sie viel bessere Ergebnisse:

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

Der Host weiß jetzt, dass Sie einen ANSI-Terminaltyp haben, und kann anhand seiner ANSI-TERMCAP-Datei mitteilen, wie er kommunizieren soll.

Wenn das nicht funktioniert und mit Ausnahme der Rücktaste fast alles ordnungsgemäß funktioniert, können Sie "getty" auf dem Host, mit dem Sie eine Verbindung herstellen, neu programmieren, um zu erkennen, was Sie möchten Lösung von Backspace / Löschproblemen):

Sie senden eine SSH- oder Telnet-Verbindung zu Ihrem Host und führen auf dem Host den Befehl stty aus. Wenn Sie die "BACKSPACE" -Taste drücken und es nicht rückwärts geht, sucht das Terminal wahrscheinlich nach einem anderen Zeichen, das auf dem TERM-Typ basiert. Anstatt alles zu durchforsten, können Sie die Backspace-Definition manuell in der CLI oder in Ihrer .profile-, .bashrc- oder .bash-Profildatei in Ihrem $ HOME-Verzeichnis festlegen, wie Sie es wünschen oder basierend auf der Version von * NIX, die Sie sind mit.

Wenn Sie also ^ H drücken (das ist STRG-H) und Ihre Taste sichert, aber Sie die BACKSPACE-Taste drücken, wird stty nicht wie folgt verwendet:

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

Meistens sieht es so aus:

stty erase \^?[ENTER]

Das '\' sagt ihm, dass das nächste Zeichen ein nicht druckbares Steuerzeichen sein wird und akzeptiert es, nicht "interpretiert" es.

Sobald Sie [ENTER] gedrückt haben, sollten Sie in der Lage sein, Ihre [BACKSPACE] -Taste zu drücken und sie mit der Rücktaste zu löschen.

Sie können dies in Ihrer Shell einstellen.

Wenn Sie jetzt immer noch VI verwenden, funktioniert die Übersetzung manchmal nicht und Sie müssen tatsächlich ^ H in vi eingeben, aber das ist in Ordnung.

Du hättest sagen können:

stty erase k [ENTER]

und es hätte buchstäblich "k" in das Löschen / Löschen-Zeichen übersetzt.

-D

TekOps
quelle
0

Ok, ich hatte dieses Problem mit der manuellen Aktualisierung einer Cygwin-Installation. Jedenfalls habe ich diesen Beitrag gefunden , der mich zur Lösung für meine Installation führte.

Der ältere Cygwin hatte eine Datei /etc/terminfo/c/cygwin, aber im neueren Cygwin erwartete er, dass es sich um eine Datei handelt /etc/terminfo/63/cygwin.

Nachdem ich die "cygwin" -Datei an diesen Speicherort kopiert hatte, funktionierte die Bash-Shell-Rücktaste einwandfrei, ebenso wie die Tabulatortaste und andere.

user327463
quelle
0

Das Ändern der TERMVariablen in cygwinund das Hinzufügen SET TERM=cygwinzur .batDatei hat bei mir nicht funktioniert, aber ich habe es behoben. Folgendes habe ich getan: Bei der Installation im Paketmanager habe ich die Installation ausgewählt xterm: X11 terminal emulator, nach der Installation SET TERM=xtermder .batDatei (wie oben vorgeschlagen) hinzugefügt , das Terminal gestartet und im Menü Optionen -> Terminal die Option Terminal ausgewählt Type=xtermund dann das Terminal neu gestartet. Backspace hat richtig funktioniert!

Hinweis: Wenn Sie cygwin bereits installiert haben, führen Sie das Installationsprogramm erneut aus und fügen Sie das xterm-Paket hinzu.

Ich renne:

  • Betriebssystem = Windows 8 (x64)
  • Cygwin setup.exe version = 2.850 (x64)
  • Mitty-Version = 1.2-beta1 (x86_64-pc-cygwin)
Argon
quelle
0

Arbeitete für mich: Geben Sie in der Windows-Eingabeaufforderung

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

Dies fügt es dem .bash_profile hinzu (nicht .bashrc, was bei mir nicht funktioniert hat, und mit einem Zeilenumbruch)

bjelli
quelle
0

Nachdem ich 2 Tage online gelesen habe. Ich fand dieses, das für mich arbeitete. Ich weiß nicht, ob dieser Fall zu jedem passt. Aber dank Yuksel hat es wie ein Zauber für mich geklappt

Das Problem war mit "termInfo" -Dateien, Schritte, die er vorgeschlagen hat

  1. Bestätigen Sie, ob das Problem mit dem Terminal zusammenhängt, indem Sie im CygWin-Terminal Folgendes eingeben: (Ignorieren Sie die Warnung.)

    less my_session.log

WARNUNG: Das Terminal ist nicht voll funktionsfähig

  1. Rufen Sie die Informationen zu 'TermCap' ab, zu welchem ​​Pfad oder Verzeichnis es gehört, indem Sie in CygWin Terminal den folgenden Code eingeben

    infocmp -C

Sie sollten entweder bekommen

infocmp: Die terminfo-Datei / usr / share / terminfo / 63 / cygwin konnte nicht geöffnet werden

Oder Sie beginnen mit einem Text wie "Über Infocmp rekonstruiert ...".

  1. Führen Sie den folgenden Code in CygWin Terminal aus, um die Diagnose auszuführen und zusätzliche Details zum Pfad zu erhalten, in dem die Dateien gespeichert werden

    cygcheck -s

Das sollte Ihnen ähnlich wie im folgenden Text antworten

Cygwin-Konfigurationsdiagnose

...

C: / cygwin / system binary, noacl

C: / cygwin / bin / usr / bin System binär, noacl

C: / cygwin / lib / usr / lib binäres System, noacl

C: \ cygwin \ etc \ terminfo / usr / share / terminfo System binär, noacl

cygdrive-Präfix / cygdrive-Benutzer binär, noacl, posix = 0, auto

...

  1. Schauen Sie sich die Zeile an, die der ähnelt

C: \ cygwin \ etc \ terminfo / usr / share / terminfo System binär, noacl

vom ausgang hast du ab dem 3. schritt bekommen. Kopieren Sie nun alle Dateien und Ordner in / usr / share / terminfo in den Ordner C: \ cygwin \ etc \ terminfo. HINWEIS : Dieser Ordner kann je nach Installation von Ihrem Ordner abweichen

gelbrot
quelle
0

Bitte folgen Sie dem Bild unten Bildbeschreibung hier eingeben

  1. Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle im Cygwin-Fenster
  2. Klicken options
  3. Klicken Sie auf die KeysRegisterkarte
  4. Tick Backarrow sends ^H
  5. Drücken Sie auf Übernehmen.

Dies ist das einzige, was bei mir funktioniert hat, vor allem, wenn Sie SSH auf einem Server stty erase ^?ausführen müssen (nicht alle Fixes funktionieren), das ich früher zu meinem .bashrc hinzugefügt habe, aber dies hat das Problem nur in 80% der Fälle behoben.

Kennzeichen
quelle
-1

Ich habe dein Problem noch nie erlebt. Versuchen Sie, Terminal Emulator Mintty ( http://code.google.com/p/mintty/ ) zu installieren .

Es ist über das Cygwin-Installationsprogramm verfügbar. Bestes Terminal für Cygwin.

Luciano Fiandesio
quelle
Das hat nicht geholfen.
user620189
Auch bin auf dem gleichen Thema stecken geblieben und ab minty funktioniert auch die Backspace-Funktionalität nicht mehr. Ich erhalte Platz, wenn ich sowohl auf dem Minz-Terminal als auch auf dem Cygwin-Terminal die Rücktaste drücke
Rachel,
@ Rachel Hast du das jemals gelöst? Ich sehe das gleiche Problem bei einer neuen Cygwin-Installation. :(
SomeCallMeTim
@SomeCallMeTim: Ich konnte dieses Problem mit Minty beheben. Cygwin verhält sich manchmal sehr seltsam.
Rachel
@ Rachel Danke, obwohl ich herausgefunden habe, dass mein Problem darin bestand, dass die Cygwin-Installation einige wichtige Dateien (wie / usr / lib / terminfo) übersehen hat. Ich weiß nicht, warum sie vermisst wurden. Ich habe jemanden mit diesem Problem gefunden, bin in das Setup gegangen und habe terminfo und termcap angewiesen, sich neu zu installieren, und alles hat funktioniert.
SomeCallMeTim