Klawisz Home nie działa w terminalu

13

Korzystam z GNOME Terminal 2.7.3 i zsh 4.3.9 (x86_64-unknown-linux-gnu)

Homei Endnie działają. Nic się nie dzieje i nic nie jest wyświetlane po ich naciśnięciu. ale działają, gdy naciskam shift + Home(przewija do początku danych wyjściowych powłoki.), a także działają w innych programach GUI. Poszukałem Google'a i wypróbowałem następujące. Brak zmiany :(

  885  bindkey "\e[1~" beginning-of-line
  886  bindkey "\e[H" beginning-of-line
  887  bindkey "\e1~" beginning-of-line
  888  bindkey "\eH" beginning-of-line
  889  bindkey "\e[0H" beginning-of-line

PS: Kiedy jestem w ostatniej zakładce i naciskam Ctrl + pagedown, ;5~drukuje się na ekranie. Czy to daje jakąś wskazówkę?

balki
źródło
Czy masz .inputrcw swoim katalogu domowym? Czy dzieje się tak w przypadku świeżo utworzonego użytkownika? Czy to zawsze się zdarzało, czy też zaczęło się któregoś dnia?
bahamat
Nie, nie mam .inputrc. Nie mam uprawnień do tworzenia nowego użytkownika. Tak było zawsze. Mieszkam z ctrl +ai ctrl+e.
balki
1
Myślę, że w takim przypadku nie będę sugerować ctrl+a& ctrl+e;-)
bahamat

Odpowiedzi:

4

Jestem na fedora jeszcze teraz proponuję czytać wiki ArchLinux za ostrożnie , cały: Home i End klawiszy nie działa .

Co zrobiłem, aby to naprawić:

  1. Naciśnij klawisze Ctrl-V Home, sekwencja Escape dla klawisza Home zostanie wydrukowana. To nie \e[4~ i \e[1~jak się spodziewałem się, patrząc na /etc/inputrc. To było [Hi[F

  2. Wyodrębnij informacje o terminalu infocmp $TERM >terminfo.src

  3. Otwórz ten plik do edycji, na przykład vim terminfo.srcposzukaj khomei kendjest on przypisany do czegoś, powiedzmy khome=\E[1~i kend=\E[4~który nie działa w tym przypadku. usuń go i zamień na sekwencję, którą znalazłeś w kroku # 1, więc dla mnie po edycji to: khome=\E[Hi kend=\E[F.

  4. Jeśli chcesz grać bezpiecznie upewnić, [Fi [H(lub cokolwiek sekwencja po prostu używany) nie jest przypisany do czegoś innego lub rzeczy zostaną pomieszane!

  5. uruchom, tic terminfo.srcktóry tworzy ~/.terminfokatalog.

  6. Na wierzchu .zshrcprzed wszystkimi innymi poleceniami umieść:export TERMINFO=~/.terminfo

Otwórz nowe okno terminala i wszystko powinno być w porządku, dom i koniec muszą już działać.

PS: Metoda bindkey powinna teoretycznie działać i jest łatwiejsza, ale dla mnie nie.

hkoosha
źródło
Testowany również w CentOS + bash - działa! Dziękuję :)
Kasia Gauza
6

Sekwencje specjalne wysyłane za pomocą klawiszy funkcyjnych i kursora składają się ze znaku zmiany znaczenia, po którym następują znaki do wydrukowania. Naciśnij Ctrl+ Vnastępnie Home. Spowoduje to wstawienie sekwencji ucieczki dosłownie. Następnie dodaj bindkeyinstrukcję do swojego ~/.zshrc.

Instrukcja prawdopodobnie będzie (uwaga O, nie 0):

bindkey '\e[OH' beginning-of-line
bindkey '\e[OF' end-of-line
Gilles „SO- przestań być zły”
źródło
nic nie jest drukowane, gdy naciskam Ctrl, a następnie Home. Nic się nie dzieje. Próbowałem również zmienić 0 na O.
balki,
@balki To Ctrl + V, a nie Ctrl. Właśnie zdałem sobie sprawę, że w mojej odpowiedzi jest problem z formatowaniem.
Gilles „SO- przestań być zły”
Dzięki! :) Mam teraz używany do ctrl + ai ctrl +eoraz vi tryb
Balki
5

Znalazłem musiałem uderzyć CTRL-v, puścić, to Homeczy Endklawisz, aby uzyskać sekwencje ^[[Hi ^[[Fna Homei Endodpowiednio. Dodanie następujących wierszy do .zshrcpliku rozwiązało problem:

bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line
Johann
źródło
2

Dodaj te wiersze, /etc/zshrca następnie zrób source /etc/zshrc(zaczerpnięte stąd )

bindkey '\e[1~'   beginning-of-line  # Linux console
bindkey '\e[H'    beginning-of-line  # xterm
bindkey '\eOH'    beginning-of-line  # gnome-terminal
bindkey '\e[2~'   overwrite-mode     # Linux console, xterm, gnome-terminal
bindkey '\e[3~'   delete-char        # Linux console, xterm, gnome-terminal
bindkey '\e[4~'   end-of-line        # Linux console
bindkey '\e[F'    end-of-line        # xterm
bindkey '\eOF'    end-of-line        # gnome-terminal
Abhinandan NM
źródło
2

Ta odpowiedź naprawdę wyjaśniła mój problem i go naprawiła.

/programming//a/686458/5472892

TL; DR: Zmień typ terminala PuTTY z domyślnego xtermna linux.

Może ktoś też może z tego skorzystać.

Thorian93
źródło