Home-Taste funktioniert nicht im Terminal

13

Ich benutze GNOME Terminal 2.7.3 und zsh 4.3.9 (x86_64-unknown-linux-gnu)

Homeund Endarbeiten nicht. Nichts passiert und nichts wird angezeigt, wenn ich sie drücke. Sie funktionieren jedoch, wenn ich drücke shift + Home(Scrollt zum Anfang der Shell-Ausgabe) und funktionieren auch in anderen GUI-Programmen. Ich googelte und versuchte Folgendes. Keine Änderung :(

  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: Wenn ich in der letzten Registerkarte bin und drücke, werde Ctrl + pagedownich ;5~auf dem Bildschirm gedruckt. Gibt das einen Hinweis?

balki
quelle
Hast du eine .inputrcin deinem Homeverzeichnis? Geschieht dies bei einem neu erstellten Benutzer? Ist das immer passiert oder hat es eines Tages begonnen?
Bahamat
Nein, habe ich nicht .inputrc. Ich habe keine Erlaubnis, einen neuen Benutzer zu erstellen. Das war schon immer so. Ich lebe mit ctrl +aund ctrl+e.
Balki
1
Ich schätze, in diesem Fall würde ich nicht vorschlagen ctrl+a& ctrl+e;-)
Bahamat

Antworten:

3

Ich bin jetzt auf Fedora, aber ich schlage vor, dass Sie Archlinux 'Wiki sorgfältig lesen. All das : Die Schlüssel Home und End funktionieren nicht .

Was ich getan habe, um es zu beheben:

  1. Drücken Sie Strg-V Start, um die maskierte Sequenz für die Starttaste zu drucken. Es ist nicht so \e[4~ und \e[1~wie ich es mir vorgestellt habe /etc/inputrc. Es war [Hund[F

  2. Extrahieren Sie die Terminalinformationen infocmp $TERM >terminfo.src

  3. Öffnen Sie die Datei für die Bearbeitung, wie vim terminfo.src, sucht khomeund kendes zu etwas zugewiesen, sagen wir , khome=\E[1~und kend=\E[4~die Arbeit ist in diesem Fall nicht. Entfernen Sie es und ersetzen Sie es durch die Sequenz, die Sie in Schritt 1 gefunden haben. Nach der Bearbeitung war es für mich also: khome=\E[Hund kend=\E[F.

  4. Wenn Sie es sicher spielen wollen sicher [Fund [H(oder was auch immer Sequenz , die Sie gerade verwendet) nicht zugewiesen , um etwas anderes oder Dinge werden vermasselt!

  5. Ausführen, tic terminfo.srcwodurch ein ~/.terminfoVerzeichnis erstellt wird .

  6. Stellen Sie .zshrcvor allen anderen Befehlen Folgendes ein:export TERMINFO=~/.terminfo

Öffnen Sie ein neues Terminalfenster und Sie sollten in Ordnung sein, daheim und am Ende muss jetzt gearbeitet werden.

PS: Die Bindkey-Methode sollte theoretisch funktionieren und ist einfacher, hat aber bei mir nicht funktioniert.

hkoosha
quelle
6

Von Funktions- und Cursortasten gesendete Escape-Sequenzen bestehen aus einem Escape-Zeichen, gefolgt von druckbaren Zeichen. Drücken Sie dann Ctrl+ . Dadurch wird die Escape-Sequenz buchstäblich eingefügt. Fügen Sie dann eine Anweisung zu Ihrer hinzu .VHomebindkey~/.zshrc

Die Anweisung lautet wahrscheinlich (Anmerkung O, nicht 0):

bindkey '\e[OH' beginning-of-line
bindkey '\e[OF' end-of-line
Gilles 'SO - hör auf böse zu sein'
quelle
Es wird nichts gedruckt, wenn ich Strg und dann Home drücke. Nichts passiert. Es wurde versucht, auch 0 in O zu ändern.
Balki
@balki Es ist Strg + V, nicht Strg. Ich habe gerade festgestellt, dass meine Antwort ein Formatierungsproblem enthält.
Gilles 'SO- hör auf böse zu sein'
Vielen Dank! :) Ich bin jetzt gewohnt ctrl + aund ctrl +eund vi-Modus
Balki
5

Ich fand ich getroffen hatte CTRL-v, loslassen, dann die Homeoder EndTaste , um die Sequenzen zu erhalten ^[[Hund ^[[Ffür Homeund Endjeweils. Das Hinzufügen der folgenden Zeilen zur .zshrcDatei löste das Problem für mich:

bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line
Johann
quelle
2

Füge diese Zeilen hinzu /etc/zshrcund mache dann ein source /etc/zshrc(von hier genommen )

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
quelle
2

Diese Antwort hat mein Problem wirklich gut erklärt und behoben.

/programming//a/686458/5472892

TL; DR: Ändern Sie den PuTTY-Terminaltyp von Standard xtermauf linux.

Vielleicht kann es auch jemand benutzen.

Thorian93
quelle