Backspace nie działa w Cygwin

29

Właśnie zainstalowałem Cygwin i nie ma tam funkcji BACKSPACE, tj. Kiedy nacisnę klawisz Backspace, dostaję spację.

Próbowałem zbadać ten problem w Google, ale nie znalazłem niczego rozstrzygającego.

użytkownik620189
źródło
Czy możesz podać więcej szczegółów na temat tego, jak zainstalowałeś i wywołałeś Cygwin i gdzie dokładnie nie działa klawisz Backspace?
ak2
1
Zgaduję, że dzieje się to w skorupce. Co się stanie, gdy wpiszesz control-V, a następnie backspace? A jaki jest wynik sttypolecenia?
Keith Thompson
Jaką masz klawiaturę? USA, Wielka Brytania itp.
pjc50,
Czy kiedykolwiek to rozwiązałeś? Widzę to teraz w mojej nowej instalacji Cygwin, chociaż wcześniej działało. Warto zauważyć, że nie dostajesz „spacji”: nie można przesunąć kursora do tyłu, aby wymazać postać. Przestrzeń, którą widzisz, to przestrzeń, która miała uderzyć w poprzednią postać. Jeśli naciśniesz ^ L, zobaczysz, że backspace działa. Właśnie dlatego stty nie naprawia rzeczy. To prawie tak, jak powłoka CMD, z którą związany jest Cygwin, nie interpretuje ruchu kursora.
SomeCallMeTim,

Odpowiedzi:

33

W moim przypadku backspace w ogóle nie działał po utworzeniu pustego ~ / .vimrc. Po zmianie sprawiło, że zadziałało

Położyć:

ustaw bs = 2

w .vimrc

Znalazłem to na http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html

Vaichidrewar
źródło
Dziękuję, to zadziałało dla mnie - wcześniej w Vimie mój klawisz backspace cofał się wzdłuż linii, ale nie czyścił liter, dopóki nie zacząłem pisać. Teraz robi „zwykły” backspace.
Robert
4
Wspaniale, że ta odpowiedź pomogła niektórym innym użytkownikom, ale w tym przypadku nie jest to rozwiązanie pytania, ponieważ pierwotne pytanie nie pyta o vima.
Kelsin
To rozwiązało również podobny problem, który miałem z klawiszami kursora
Steve Paul
12

Pracowałem dla mnie: w wierszu polecenia systemu Windows wpisz

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

To doda to do .bashrci wszystko może ładnie działać!

Marrciowr
źródło
1
Miałem TERMzmienną środowiskową ustawioną msysza pomocą ustawień zmiennych środowiskowych systemu Windows, jak sugerowano w StackOverflow, aby pomóc w gitproblemach w systemie Windows. Wystarczy resetowania go cygwinw .bashrcnie pomogło, ale usunięcie TERMwpisu z ustawień systemu Windows nie. Dzięki za wskazanie mi właściwego kierunku!
Florian Brucker
To rozwiązało fakt, że cygwin64 ignorował spacje w poleceniach zawierających podziały wierszy. Dzięki.
suanik
11

Znalazłem rozwiązanie problemu, który przedstawiał się podobnie jak powyższy.

Wystarczy uruchomić konfigurację Cygwin ponownie i ponownie zainstalować termcapi terminfo. Jeśli użyjesz pola wyszukiwania, możesz je szybko znaleźć. Zamiast powiedzieć „Zachowaj” dla każdego z nich, kliknij, aby powiedzieć „Ponownie zainstaluj”. Może być konieczne zaznaczenie pola wyboru „Ukryj nieaktualne”, termaby pojawił się w wyszukiwaniu.

Całkowicie brakuje mojego folderu terminfo. Nie mam pojęcia dlaczego. Mam nadzieję, że to komuś pomoże.

SomeCallMeTim
źródło
1
Miałem niestandardowo zainstalowane ncurses, które usunąłem. Po usunięciu i ponownej instalacji przez cygwin setup.exe miałem ten problem. Nie chcę stosować bandaida, ustawiając zmienne TERM na coś innego niż to, co działało przed moim nieszczęściem. Ponowna instalacja terminfo (nie mogłem znaleźć termcap) działała dla mnie. Dzięki!
Kelsin
fajnie, działa, ale dlaczego?!
Yordan Georgiev
5

Edytuj swoje c: \ cygwin \ cygwin.bat

Umieść to: SET TERM=cygwin

przed: bash --login -i

Josef
źródło
1
Jak dotąd najprostsza poprawka. Mam nadzieję, że nie ma żadnych skutków ubocznych.
RomanSt
1

Kiedy ustawiasz typ TERM, mówisz hostowi, którego TERMCAP ma użyć do rysowania w oknie terminala. Większość hostów * NIX nie wie, czym jest typ „cygwin”, więc nie wiedzą, jak manipulować znakami na ekranie, takimi jak wstawianie, usuwanie, przewijanie, zmiany czcionek itp.

Jeśli zmienisz zmienną TERM w CYGWIN przed telnetem lub SSH na hosta, uzyskasz znacznie lepsze wyniki:

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

Host wie teraz, że masz typ terminala ANSI i może użyć pliku ANSI TERMCAP, aby powiedzieć mu, jak się komunikować.

Jeśli nie możesz tego zrobić, a większość działa poprawnie oprócz backspace, możesz przeprogramować „getty” na hoście, z którym się łączysz, aby rozpoznać, czego chcesz, i oto jak to zrobić (jest to najstarszy, najczęstszy i najbardziej uniwersalny sposób rozwiązywania problemów z cofaniem / usuwaniem):

Ssh lub telnet do hosta i na hoście uruchom polecenie stty. Jeśli naciśniesz klawisz „BACKSPACE” i nie cofnie się, to dlatego, że terminal prawdopodobnie szuka innej postaci na podstawie typu TERM. Zamiast przekopać się przez to wszystko, możesz ręcznie ustawić definicję backspace w CLI lub w pliku .profile, .bashrc lub .bash-profile w katalogu $ HOME według własnego uznania lub na podstawie smaku * NIX, którym jesteś za pomocą.

Więc jeśli naciśniesz ^ H (to CONTROL-H), a twój klucz się cofnie, ale naciśniesz BACKSPACE i nie spróbuje użyć stty w następujący sposób:

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

Przez większość czasu będzie to wyglądać tak:

stty erase \^?[ENTER]

„\” Oznacza, że ​​następny znak będzie drukowalnym znakiem kontrolnym i zaakceptuje go, a nie „zinterpretuje”.

Po naciśnięciu [ENTER] powinno być możliwe naciśnięcie klawisza [BACKSPACE] i cofnięcie / usunięcie dowolnego wpisanego tekstu.

Możesz ustawić to w swojej powłoce.

Teraz, jeśli nadal używasz VI, czasami tłumaczenie nie działa i musisz w rzeczywistości wpisać ^ H w vi, ale to jest OK.

Mogłeś powiedzieć:

stty erase k [ENTER]

i dosłownie przetłumaczyłoby „k” na znak kasowania / usuwania.

-RE

TekOps
źródło
0

Ok, miałem ten problem z ręczną aktualizacją instalacji Cygwin. W każdym razie znalazłem ten post , który doprowadził mnie do rozwiązania mojej instalacji.

Starszy cygwin miał plik /etc/terminfo/c/cygwin, ale w nowszym cygwin oczekiwał, że plik będzie /etc/terminfo/63/cygwin.

Gdy skopiowałem plik „cygwin” do tej lokalizacji, klawisz backspace powłoki bash działał dobrze, podobnie jak tab i inne.

użytkownik327463
źródło
0

Zmiana TERMzmiennej cygwini dodawanie SET TERM=cygwindo .batpliku nie działało dla mnie, ale naprawiłem to. Oto co zrobiłem: W menedżerze pakietów z powodu instalacji wybrałem do zainstalowania xterm: X11 terminal emulator, po instalacji dodałem SET TERM=xtermdo .batpliku (jak zaproponowano powyżej), uruchomiłem terminal, aw menu Opcje -> wybrano menu TerminalType=xterm , a następnie uruchomiłem ponownie terminal. Backspace zaczął działać poprawnie!

Uwaga: jeśli już zainstalowałeś cygwin - po prostu uruchom instalator ponownie i dodaj pakiet xterm.

Biegnę:

  • OS = Windows 8 (x64)
  • Wersja Cygwin setup.exe = 2.850 (x64)
  • Wersja Mitty = 1.2-beta1 (x86_64-pc-cygwin)
Argon
źródło
0

Pracowałem dla mnie: w wierszu polecenia systemu Windows wpisz

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

Spowoduje to dodanie go do pliku .bash_profile (nie .bashrc, który nie działał dla mnie i z podziałem wiodącym)

bjelli
źródło
0

Po spędzeniu 2 dni na czytaniu rzeczy online. Znalazłem ten, który dla mnie zadziałał. Nie wiem, czy ten przypadek pasuje do każdego. Ale dzięki Yukselowi zadziałało to dla mnie jak urok

Problem polegał na plikach „termInfo”, które zasugerował

  1. potwierdź, czy problem dotyczy terminala, wpisując w CygWin Terminal, powinno to dać (zignoruj ​​ostrzeżenie)

    less my_session.log

OSTRZEŻENIE: terminal nie jest w pełni funkcjonalny

  1. Uzyskaj informacje o „TermCap”, z którą ścieżką lub katalogiem jest związany, wpisując poniższy kod w terminalu CygWin

    infocmp -C

powinieneś albo dostać

infocmp: nie można otworzyć pliku terminfo / usr / share / terminfo / 63 / cygwin

Możesz też otrzymać coś zaczynającego się od tekstu typu „Zrekonstruowany przez infocmp ...”

  1. Uruchom poniższy kod w terminalu CygWin, aby uruchomić diagnostykę i uzyskać dodatkowe informacje na temat ścieżki, w której zapisywane są pliki

    cygcheck -s

które powinny odpowiedzieć ci podobnie do poniższego tekstu

Diagnostyka konfiguracji Cygwin

...

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 binarny, noacl

prefiks cygdrive / użytkownik binarny cygdrive, noacl, posix = 0, auto

...

  1. sprawdź linię podobną do

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

z wyjścia otrzymałeś z trzeciego kroku. teraz skopiuj wszystkie pliki i foldery istniejące w katalogu / usr / share / terminfo do folderu C: \ cygwin \ etc \ terminfo - UWAGA: ten folder może różnić się od twojego w zależności od instalacji

yellowandred
źródło
0

Postępuj zgodnie z obrazkiem poniżej wprowadź opis zdjęcia tutaj

  1. Kliknij prawym przyciskiem myszy w dowolnym miejscu w oknie Cygwin
  2. Kliknij options
  3. Kliknij Keyszakładkę
  4. Kleszcz Backarrow sends ^H
  5. Naciśnij Zastosuj.

Jest to jedyna rzecz, która działała dla mnie, zwłaszcza, że ​​jeśli musisz połączyć się z serwerem SSH (nie wszystkie poprawki będą działać), użyłem dodawania stty erase ^?do mojego .bashrc, ale to naprawiło problem tylko w 80% przypadków.

znak
źródło
-1

Nigdy nie doświadczyłem twojego problemu. Spróbuj zainstalować Terminal Emulator Mintty ( http://code.google.com/p/mintty/ ).

Jest dostępny za pośrednictwem instalatora Cygwin. Najlepszy terminal dla cygwina.

Luciano Fiandesio
źródło
To nie pomogło.
user620189,
Nawet utknąłem w tej samej sprawie i od Minty również funkcja backspace nie działa. Dostaję przestrzeń, gdy uderzam w backspace zarówno na terminalu minty, jak i terminalu cygwin
Rachel
@Rachel Czy kiedykolwiek to rozwiązałeś? Widzę ten sam problem ze świeżą instalacją Cygwin. :(
SomeCallMeTim
@SomeCallMeTim: Byłem w stanie rozwiązać ten problem za pomocą Minty, cygwin czasami zachowuje się bardzo dziwnie.
Rachel
@Rachel Dzięki, chociaż dowiedziałem się, że mój problem polegał na tym, że instalacja Cygwin pominęła niektóre ważne pliki (jak / usr / lib / terminfo). Nie wiem, dlaczego zaginęli; znalazłem kogoś innego z tym problemem, przeszedłem do instalacji i powiedział terminfo i termcap, aby ponownie zainstalowali i wszystko działało.
SomeCallMeTim