Backspace funktioniert in Cygwin nicht

26132
user620189

Ich habe gerade Cygwin installiert und die BACKSPACE-Funktion ist nicht vorhanden, dh wenn ich die Rücktaste drücke, bekomme ich ein Leerzeichen.

Ich habe versucht, dieses Problem bei Google zu recherchieren, fand aber nichts Schlüssiges.

28
Können Sie weitere Informationen dazu geben, wie Sie Cygwin installiert und aufgerufen haben und wo genau der Backspace-Schlüssel nicht funktioniert? ak2 vor 13 Jahren 0
Ich vermute, das passiert in der Schale. Was passiert, wenn Sie Control-V gefolgt von der Rücktaste eingeben? Und was ist die Ausgabe des `stty`-Befehls? Keith Thompson vor 13 Jahren 1
Was für eine Tastatur hast du? USA, Großbritannien usw. pjc50 vor 12 Jahren 0
Hast du das jemals gelöst? Ich sehe es jetzt auf meiner neuen Cygwin-Installation, obwohl es vorher funktioniert hat. Es ist erwähnenswert, dass Sie kein "Leerzeichen" erhalten: Der Cursor kann nicht zurückbewegt werden, um den Charakter zu löschen. Der Raum, den Sie sehen, ist der Raum, der den vorherigen Charakter treffen sollte. Wenn Sie auf ^ L drücken, können Sie sehen, dass der Rückschritt funktioniert. Deshalb repariert stty nicht Dinge. Es ist fast so, als ob die CMD-Shell, an die Cygwin gebunden ist, die Bewegung des Cursors nicht interpretiert. SomeCallMeTim vor 12 Jahren 0

11 Antworten auf die Frage

34
vaichidrewar

In my case backspace was not at all working after creating blank ~/.vimrc. Following change made it work

Put:

set bs=2

in .vimrc

Found this at http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html

Vielen Dank, das hat für mich funktioniert. Früher, in Vim, bewegte sich meine Rücktaste wieder entlang der Zeile, löschte aber die Buchstaben erst, als ich anfing zu tippen. Jetzt macht es den "üblichen" Rückschritt. Robert vor 11 Jahren 0
Es ist großartig, dass diese Antwort einigen anderen Benutzern geholfen hat, aber in diesem Fall ist dies keine Lösung für die Frage, da die ursprüngliche Frage nicht nach vim fragt. Kelsin vor 10 Jahren 3
Dies löste auch ein ähnliches Problem, das ich mit den Cursortasten hatte Steve Paul vor 8 Jahren 0
11
SomeCallMeTim

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

Starten Sie einfach Cygwin-Setup erneut und installieren Sie termcapund terminfo. Wenn Sie das Suchfeld verwenden, können Sie sie schnell finden. Klicken Sie nicht auf "Beibehalten", sondern auf "Neu installieren". Möglicherweise müssen Sie das Kontrollkästchen "Hide Obsolete" aktivieren, um termin der Suche angezeigt zu werden .

Mein terminfo-Ordner fehlte völlig. Keine Ahnung warum. Hoffe das hilft jemandem.

Ich hatte einen benutzerdefinierten ncurses installiert, den ich entfernt habe. Nach dem Entfernen und erneuten Installieren über cygwin setup.exe hatte ich dieses Problem. Ich möchte keine Panda anwenden, indem ich TERM-Variablen auf etwas anderes setze als das, was vor meinem Missgeschick funktionierte. Das erneute Installieren von terminfo (ich konnte Termcap nicht finden) funktionierte für mich. Vielen Dank! Kelsin vor 10 Jahren 1
cool, funktioniert, aber warum?! Yordan Georgiev vor 9 Jahren 0
9
Marrciovr

Für mich gearbeitet: Geben Sie in die Windows-Eingabeaufforderung ein

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

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

Ich hatte die `TERM`-Umgebungsvariable über die Windows-Umgebungsvariableneinstellungen auf 'msys' gesetzt, wie vorgeschlagen [auf StackOverflow] (http://stackoverflow.com/a/10980838/857390), um bei` git`-Problemen unter Windows zu helfen. Das Zurücksetzen auf `cygwin` in` .bashrc` hat nicht geholfen, aber das Entfernen des `TERM`-Eintrags aus den Windows-Einstellungen tat dies. Danke, dass Sie mich in die richtige Richtung weisen! Florian Brucker vor 11 Jahren 1
5
Josef

Bearbeiten Sie Ihr c: \ cygwin \ cygwin.bat

Platzieren Sie dies: SET TERM=cygwin

Vor: bash --login -i

Die einfachste Lösung bei weitem. Ich hoffe es gibt keine Nebenwirkungen. RomanSt vor 10 Jahren 1
1
TekOps

Wenn Sie den TERM-Typ festlegen, teilen Sie dem Host mit, welche TERMCAP im Terminalfenster gezeichnet werden soll. Die meisten * NIX-Hosts wissen nicht, was ein "cygwin" -Termintyp ist, und wissen nicht, wie sie die Zeichenmanipulation auf dem Bildschirm wie Einfügen, Löschen, Scrollen, Schriftwechsel usw. durchführen.

Wenn Sie die TERM-Variable in CYGWIN vor Telnet oder SSH in einen Host ändern, erhalten Sie wesentlich 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 über einen ANSI-Terminaltyp verfügen, und er kann seine ANSI-TERMCAP-Datei verwenden, um der Kommunikation mitzuteilen.

Wenn Sie das nicht zum Laufen bringen können und die meisten Funktionen außer der Rücktaste einwandfrei funktionieren, können Sie "getty" auf dem Host, zu dem Sie eine Verbindung herstellen, umprogrammieren, um zu erkennen, was Sie möchten Lösung von Problemen mit Rückschritt / Löschen):

Sie ssh oder telnet zu Ihrem Host und im Host führen Sie den Befehl stty aus. Wenn Sie die Taste "BACKSPACE" drücken und nicht rückwärts gehen, liegt dies daran, dass das Terminal wahrscheinlich nach einem anderen Zeichen sucht, das auf dem Typ TERM basiert. Anstatt all das durchzugehen, können Sie die Backspace-Definition manuell in der CLI oder in Ihren .profile, .bashrc- oder .bash-Profildateien in Ihrem $ HOME-Verzeichnis festlegen, je nachdem, was Sie möchten oder basierend auf * NIX mit.

Wenn Sie also ^ H (das ist CONTROL-H) drücken und Ihre Taste sichert, Sie aber 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 aus, dass das nächste Zeichen ein nicht druckbares Steuerzeichen sein wird, das akzeptiert wird, nicht "interpretiert" wird.

Wenn Sie [ENTER] drücken, sollten Sie die Taste [BACKSPACE] drücken können, um die Eingabe rückgängig zu machen / zu löschen.

Sie können dies in Ihrer Shell festlegen.

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

Sie hätten sagen können:

stty löschen k [ENTER]

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

-D

0
user327463

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 wurde erwartet, dass es sich um eine Datei handelt /etc/terminfo/63/cygwin.

Nachdem ich die "cygwin" -Datei an diesen Speicherort kopiert hatte, funktionierte der Bash-Shell-Backspace-Schlüssel ebenso wie der Tabulator und andere.

0
Argon

Das Ändern der TERMVariablen in die Datei cygwinund das Hinzufügen SET TERM=cygwinzu dieser .batDatei funktionierte für mich nicht, aber ich habe sie behoben. Hier habe ich Folgendes getan: Im Paketmanager habe ich aufgrund der Installation die Installation ausgewählt xterm: X11 terminal emulator. Nach der Installation habe ich SET TERM=xtermdie .batDatei (wie oben vorgeschlagen) hinzugefügt, das Terminal gestartet und im Menü Optionen -> Terminal das Terminal ausgewählt Type=xtermund dann das Terminal neu gestartet. Backspace hat richtig funktioniert!

Hinweis: Wenn Sie cygwin bereits installiert haben, führen Sie einfach 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)
0
2991ambusher

Ich stimme allen Antworten hier zu. Es gibt jedoch einen viel einfacheren Weg, den Sie hier finden können: http://lifepluslinux.blogspot.in/2014/08/backspace-doesnt-work-in-vim-on-cygwin.html

0
bjelli

Für mich gearbeitet: Geben Sie in die Windows-Eingabeaufforderung ein

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

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

0
yellowandred

Nachdem ich 2 Tage Zeit hatte, um online Dinge zu lesen. Ich habe dieses gefunden, das für mich gearbeitet hat. Ich weiß nicht, ob dieser Fall zu jedem passt. Dank Yuksel hat es mir aber sehr gut gefallen

Das Problem war bei 'termInfo' -Dateien, die er vorgeschlagen hat

  1. Bestätigen Sie, ob das Problem mit dem Terminal zusammenhängt, indem Sie das CygWin-Terminal eingeben. Dies sollte die Warnung anzeigen.

    less my_session.log

WARNUNG: Terminal ist nicht voll funktionsfähig

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

    infocmp -C

du solltest entweder bekommen

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

Oder Sie erhalten auch etwas, das mit einem Text wie "Rekonstruiert über Infocmp ..." beginnt.

  1. Führen Sie den folgenden Code in CygWin Terminal aus, um die Diagnose auszuführen, um weitere Informationen zum Pfad zu erhalten, in dem die Dateien gespeichert werden

    cygcheck -s

das sollte dir ähnlich dem unten stehenden Text entsprechen

Cygwin-Konfigurationsdiagnose

...

C: / cygwin / system binary, noacl

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

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

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

cygdrive prefix / cygdrive benutzer binär, noacl, posix = 0, auto

...

  1. check out für Zeile ähnlich

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

Von der Ausgabe haben Sie den 3. Schritt erhalten. Kopieren Sie jetzt alle Dateien und Ordner, die sich in / usr / share / terminfo befinden, in den Ordner C: \ cygwin \ etc \ terminfo. HINWEIS : Dieser Ordner kann je nach Installation von Ihrem Ordner abweichen