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.
stty
polecenia?
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.
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
Pracowałem dla mnie: w wierszu polecenia systemu Windows wpisz
echo export TERM=cygwin >> C:/cygwin/home/YourUser/.bashrc
To doda to do .bashrc
i wszystko może ładnie działać!
TERM
zmienną środowiskową ustawioną msys
za pomocą ustawień zmiennych środowiskowych systemu Windows, jak sugerowano w StackOverflow, aby pomóc w git
problemach w systemie Windows. Wystarczy resetowania go cygwin
w .bashrc
nie pomogło, ale usunięcie TERM
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
i 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”, term
aby pojawił się w wyszukiwaniu.
Całkowicie brakuje mojego folderu terminfo. Nie mam pojęcia dlaczego. Mam nadzieję, że to komuś pomoże.
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
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 TERM
zmiennej cygwin
i dodawanie SET 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 zainstalowania xterm: X11 terminal emulator
, po instalacji dodałem SET 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ę:
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
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
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
...
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
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.
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.