Klawisze Home, End, PageUp, PageDown wszystkie wpisują a ~
w mojej sesji bash zamiast przesuwać kursor / widok. Dlaczego tak się dzieje i które ustawienia muszę zmienić?
GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60
Pytanie pierwotnie brzmiało:
Dlaczego w PuTTY naciśnięcie klawisza „Home” na powłoce (bash) powoduje wpisanie „~”? A raczej, jak sprawić, by przesunął kursor na początek wpisanego polecenia?
(Myślałem, że powodem jest to, że ~ jest katalogiem domowym , ale odpowiedzi mówią, że tak nie jest.)
Terminal -> Keyboard
„Klawisze funkcyjne i klawiatura”.Dzieje się tak, ponieważ nie masz poprawnie ustawionego typu terminala PuTTY lub ponieważ na twoim serwerze nie ma zainstalowanych poprawnych definicji terminfo.
W systemach opartych na Debianie pakiet ncurses-term (wersja 5.7 + 20081213-1) zawiera pliki definicji terminfo dla typów końcówek putty , putty-256color i putty-vt100 . Jeśli masz zainstalowany ten pakiet, możesz ustawić „Ciąg terminala” na „putty” zamiast domyślnego „xterm” w konfiguracji sesji Putty (Połączenie -> Dane).
Stephen Irons wspomina także o „linuksie” jako innym typie terminala, który działa; Uważam, że jest to poprawne z wcześniejszych doświadczeń, ale nie przetestowałem tego ostatnio.
W moich systemach pozwala to na prawidłowe działanie Home i End, chociaż PageUp / PageDown nie przewijają okna konsoli. (Działają poprawnie w aplikacjach ncurses, takich jak aptitude , a Shift-PgUp / Shift-PgDn przewijają okno konsoli.)
źródło
TERM=putty
lubTERM=putty-256color
jest najmądrzejsze, choć niestety w tej chwili wydaje się, że ta ostatnia nie działa poprawnie dla kolorów 8-15 (które mają być jasnymi wersjami 0-7). Inne „rozwiązania” z dużym prawdopodobieństwem mogą się czasem skończyć z rażącym lekceważeniem różnic między zaangażowanymi terminalami.yum install ncurses-term
posortowałem to dla mnie na CentOS 7 z kitem przy następnym logowaniu, dziękuję.putty
działanie, ale psuje obsługę myszy podobnej do xterm (np. dla Midnight Commander)Jeśli chcesz sprawdzić, który kod jest wysyłany przez PuTTY do twojego terminala po naciśnięciu klawisza lub kombinacji klawiszy, wystarczy wydać a,
Ctrl+V
a następnie nacisnąć żądany klawisz.Na przykład naciśnięcie klawisza Home spowoduje wygenerowanie następującego ciągu na moim terminalu:
Oznacza to, że PuTTY wysyła znak ucieczki ^ [ a następnie ciąg [1 ~ .
Możesz utworzyć
~/.inputrc
plik w swoim$HOME
folderze lub/etc/inputrc
plik w zależności od systemu. Następnie wypełnij ten plik kodami PuTTY i pasującymi działaniami Bash, które chcesz uruchomić Bash.Uwaga: Zamień każdy ^ [ znak na równoważny ciąg \ e
W moim przykładzie dodam wiersz z moim kodem Home i działaniem na początku wiersza (z którym domyślnie jest związane
Ctrl+A
w Bash):Do Twojej wiadomości, mój plik inputrc ma następującą treść:
Z @Cimbali: Więcej możliwych do powiązania poleceń (takich jak poprzednia historia: Przejdź „w górę” przez listę historii) dostępnych na tej stronie referencyjnej .
źródło
TERM=linux
lubTERM=putty
psuje obsługę myszy podobnych do Xterm. Dzięki!Crtl + A zabierze Cię do początku linii
Oto lista skrótów klawiaturowych Bash
źródło
To, co faktycznie wysyła, to
^[[1~
końcowa sekwencja ucieczki składająca się z:Możesz to zobaczyć, naciskając Ctrl+ Vnastępnie Home.
Możesz być w stanie rozwiązać problem, zmieniając ustawienie klawiatury PuTTY dla klawiszy Home i End na rxvt (co tworzy sekwencję ucieczki
^[[H
lub zmieniając $ TERM, którego używasz (lub edytując~/.inputrc
).Nawiasem mówiąc, nie ma związku między tyldą, którą dostajesz po naciśnięciu, Homea tyldą reprezentującą katalog domowy. Na przykład w moim zestawie Page-Downprodukuje,
^[[6~
które drukowałyby tyldę, jeśli nie byłaby odpowiednio interpretowana.źródło
~
i żadne ustawienia Klawiatury PuTTY nie powodują ich działania. Czy moje bash jest popsute, czy to „normalne”?echo $TERM
?xterm
(Limit 15 znaków)"\eOw": end-of-line
(to jest duża litera O) do swojego~/.inputrc
pliku.Żadna z tych opcji nie działała dla mnie. Korzystam ze starego systemu AIX. Musiałem dodać następujące aliasy do mojego .profile
źródło
Nie mogłem go uruchomić innymi metodami. Jednak stworzyłem ten skrypt AutoHotkey, który działa, o ile twoja powłoka to Bash:
Należy jednak zachować ostrożność , ponieważ nie wszystkie skróty klawiszowe bash działają w innych programach.
źródło
screen
co przy ustawieniach domyślnych psuje Ctrl-A, ponieważ używa go jako znaku ucieczki ....