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
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
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.
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!
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.
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.
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.
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ł
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
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 ...”
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
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
Kliknij prawym przyciskiem myszy w dowolnym miejscu w oknie Cygwin
Kliknij options
Kliknij Keyszakładkę
Kleszcz Backarrow sends ^H
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.
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.
stty
polecenia?Odpowiedzi:
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
źródło
Pracowałem dla mnie: w wierszu polecenia systemu Windows wpisz
To doda to do
.bashrc
i wszystko może ładnie działać!źródło
TERM
zmienną środowiskową ustawionąmsys
za pomocą ustawień zmiennych środowiskowych systemu Windows, jak sugerowano w StackOverflow, aby pomóc wgit
problemach w systemie Windows. Wystarczy resetowania gocygwin
w.bashrc
nie pomogło, ale usunięcieTERM
wpisu z ustawień systemu Windows nie. Dzięki za wskazanie mi właściwego kierunku!Znalazłem rozwiązanie problemu, który przedstawiał się podobnie jak powyższy.
Wystarczy uruchomić konfigurację Cygwin ponownie i ponownie zainstalować
termcap
iterminfo
. 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”,term
aby pojawił się w wyszukiwaniu.Całkowicie brakuje mojego folderu terminfo. Nie mam pojęcia dlaczego. Mam nadzieję, że to komuś pomoże.
źródło
Edytuj swoje c: \ cygwin \ cygwin.bat
Umieść to:
SET TERM=cygwin
przed:
bash --login -i
źródło
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:
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:
Przez większość czasu będzie to wyglądać tak:
„\” 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
źródło
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.
źródło
Zmiana
TERM
zmiennejcygwin
i dodawanieSET TERM=cygwin
do.bat
pliku 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 zainstalowaniaxterm: X11 terminal emulator
, po instalacji dodałemSET TERM=xterm
do.bat
pliku (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ę:
źródło
Zgadzam się ze wszystkimi odpowiedziami tutaj. Ale istnieje o wiele prostszy sposób znaleziony tutaj: http://lifepluslinux.blogspot.in/2014/08/backspace-doesnt-work-in-vim-on-cygwin.html
źródło
Pracowałem dla mnie: w wierszu polecenia systemu Windows wpisz
Spowoduje to dodanie go do pliku .bash_profile (nie .bashrc, który nie działał dla mnie i z podziałem wiodącym)
źródło
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ł
potwierdź, czy problem dotyczy terminala, wpisując w CygWin Terminal, powinno to dać (zignoruj ostrzeżenie)
less my_session.log
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ć
Możesz też otrzymać coś zaczynającego się od tekstu typu „Zrekonstruowany przez infocmp ...”
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
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
źródło
Postępuj zgodnie z obrazkiem poniżej
options
Keys
zakładkęBackarrow sends ^H
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.źródło
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.
źródło