Strg + Links / Rechts Pfeiltasten Problem

25

Nach der letzten Systemaktualisierung führt der Befehl Strg + Links- / Rechtspfeil auf dem zsh- Terminal nichts aus. Auch Strg + U hat etwas falsch gemacht, weil normalerweise dieser Befehl vom Cursor zum Zeilenanfang löscht, während jetzt die gesamte Zeile gelöscht wird. Weiß jemand, wie man diese Probleme löst? Danke euch allen.

riskio
quelle
Haben Sie eine akzeptable Antwort gefunden? Ich finde Goncalos Antwort großartig.
Léo Léopold Hertz 준영

Antworten:

44

FWIW, das hat in meiner Umgebung (rhel5.x) mit den Standardeinstellungen von zsh funktioniert.

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
Goncalo
quelle
5
^[^[[Dund ^[^[[Cjeweils für OSX
Jon z
1
Bestätigt, Goncalos Vorschlag funktioniert auch in Debian 8.5. Ich frage mich nur, warum dieser Code nicht .zshrcstandardmäßig eingebaut ist .
Léo Léopold Hertz 준영
Funktioniert wie ein Zauber in Ubuntu Artful, danke!
Konrad Garus
Für den Fall, dass jemand $terminfoanstelle der Escape-Sequenzen verwenden möchte : die Schlüssel $terminfo[kLFT5]und $terminfo[kRIT5]arbeitete für mich
Griddo
14

Strg + U ist am wahrscheinlichsten, weil Sie den Cursor am Ende der Zeile haben. Zweitens, auf welche Version von Gentoo beziehen Sie sich als "letztes Systemupdate"?

Und was möchten Sie mit der Tastenkombination Strg + Links / Rechts machen?

  • Zu zsh config hinzufügen:

bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

  • Und aus altem Schrott fand ich (könnte helfen):

bindkey ";5C" forward-word
bindkey ";5D" backward-word

  • oder schauen Sie sich diesen Link an, der Ihnen weiterhelfen sollte?

Hinweis: Wenn die Konfiguration funktioniert, die vermeintlichen Tasten jedoch nicht das tun, was Sie möchten, liegt dies möglicherweise daran, dass sich die Tastendefinition von Ihrer und meiner unterscheidet. Führen Sie Folgendes aus: cat > /dev/null und drücken Sie die Tasten, die ausgegeben und entsprechend angepasst werden sollen.

Torxed
quelle
1
"Strg + U ist am wahrscheinlichsten, weil Sie den Cursor am Ende der Zeile haben." Natürlich meine ich, wenn mein Cursor in der Mitte ist. "Und was möchten Sie mit Strg + Links / Rechts tun?" in der regel strg + pfeil links: wort überspringen nach links usw ...
riskio
Und welche Shell / Terminal verwenden Sie? Bist du sicher, dass du Emacs oder ein anderes Terminal benutzt und / bin / bash? Laufen Sie durch den Bildschirm?
Torxed
1
Bitte lesen Sie die Frage ist da ..
riskio
1
@Masi Ich bin mir nicht sicher, ich habe zwei Jahre vor ihm geantwortet und unsere Antworten sind fast identisch. Ich habe nur zwei verschiedene Wege aufgezeigt, dies zu tun.
Torxed
1
@Masi Ich weiß nur, dass diese beiden (und ihre Kombination) damals (2010-2012) auf vielen verschiedenen Systemen für mich gearbeitet haben. Ich war sowohl unter Unix als auch unter Linux (und er war unter Gentoo, einem rollierenden Betriebssystem). Und es gibt immer noch Spuren davon an vielen Beispielen. Wie dieses Repository. Ich bin mir nicht ganz sicher, warum, aber es funktionierte auf mindestens zwei Rechnern. Ich dachte, ich würde es teilen. Und sicher ist es ihm HEUTE klarer, und es macht mir nichts aus, dass er alle Stimmen bekommt. Dies ist ein Legacy-Post.
Torxed
5

Was funktioniert, hängt nicht direkt von der Distribution (Gentoo, Debian, RHEL usw.) oder der Shell (ZSH, KSH, BASH) ab - es hängt davon ab, welche terminal emulatorverwendet wird und welche Einstellungen vorhanden sind: Konsole, Terminator, urxvt, lx-terminal usw. Die Distribution kann von Bedeutung sein, wenn sie eine andere Standard-Shell-Konfiguration (fx. .zshrc) verwendet, und wenn sie eine andere Shell verwendet, die die Konfiguration dieser Distribution unterstützt.

Hier sind einige Terminalemulator-spezifische Lösungen:

urxvt / rxvt-unicode (und vielleicht auch andere):

bindkey "^[Od" backward-word
bindkey "^[Oc" forward-word

terminator, konsole und xterm (und vielleicht auch andere):

bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word

Für eine allgemeinere Vorgehensweise starten Sie Ihr Terminal, indem Sie STRG-V gefolgt von der Tastenkombination drücken, für die Sie den Escape-Code (den Namen) möchten - in diesem Fall die Tastenkombinationen STRG-Links-Pfeil und STRG-Rechts-Pfeil - und die Ausgabe für jeden Befehl eingeben Tastenkombination zwischen den beiden Anführungszeichen.

miyalys
quelle
1
Haben Sie den STRG-V-Vorschlag ausprobiert? Vielleicht interpretiert Ihr Terminal die Tastenanschläge anders, sodass die Taste an verschiedene "Symbole" gebunden werden muss?
Miyalys
1
Ich habe meine Antwort aktualisiert. Je nach terminal emulatorverwendeter Lösung gibt es mehrere . Die Distribution oder Shell spielt keine Rolle. Das ist wahrscheinlich auch der Grund, warum es nicht in .zshrc ist, weil das, was für einen Terminalemulator funktioniert, für einen anderen nicht funktioniert. Aber das könnte wahrscheinlich gelöst werden, wenn zshrc fx. Lesen Sie die Umgebungsvariable $ TERM und wenden Sie basierend auf dem Ergebnis verschiedene Bindkey-Einstellungen an.
Miyalys
2

Gelöst

Verwendetes Terminal: Konsole .

Zum Lösen: Rechtsklick auf Terminal (oder Einstellungen in der Menüleiste) -> Aktuelles Profil ändern -> Tastaturbelegung -> Zu Standard wechseln (xfree4)

riskio
quelle
Nicht einmal wirklich mit zsh verwandt, aber sicher, ein Fix ist ein Fix.
Torxed