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ę?


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.


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

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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.