Ich habe mich auf einem Hosting-Provider-Server angemeldet und festgestellt, dass ALT + links und ALT + rechts in einer Shell-Eingabeaufforderung in GNU Screen zwischen den Wörtern verschoben wurden.
Welche Art von Tastenkombinationen muss ich konfigurieren und woher soll dieses Verhalten für mein lokales OS X zsh, das in iTerm2 ausgeführt wird, stammen?
keyboard-shortcuts
zsh
iterm2
key-binding
Mikko Ohtamaa
quelle
quelle
FOO=BAR
ist ein Wort für zsh und 2 Wörter für bash. Wenn Sie den Cursor auf das Ende von setzenfoo --bar
und die Tastenkombination Alt + Rücktaste drücken, erhalten Sie in Bashfoo --
und in Zshfoo
. Zsh fügt Bash viele Funktionen hinzu, aber es gibt auch viele verrückte Standardeinstellungen, die überschrieben werden müssen.Antworten:
Ich habe die Lösung hier gefunden: https://coderwall.com/p/h6yfda . Kopiert die wichtigsten Teile davon, falls der Link ausfällt.
quelle
Sie suchen nach den Stichwörtern
backward-word
undforward-word
. Wenn Sie sich also in einer Shell befinden, in der die Tastenkombinationen nicht funktionieren, versuchen Siebindkey -L | grep backward-word
, zu überprüfen, ob sie überhaupt konfiguriert sind. Weitere Informationen hierzu finden Sie in zshzle (1) .Sie können die Tastenzuordnung manuell festlegen, indem Sie Folgendes eingeben:
Ich hatte auch einige Probleme mit Tastenkombinationen und das Problem war fast immer, dass die Option / Alt-Taste etwas anderes als das erwartete Meta / Escape gesendet hat.
quelle
emacs-forward-word
und verwendenemacs-backward-word
. Der Unterschied besteht darin, dass Sie vorwärts zum Wortende und rückwärts zum Wortanfang springen, anstatt immer am Wortanfang zu springen.Ich kann nicht für iTerm sprechen, aber dies sind die Tastenkombinationen, mit denen ich dieses Problem unter GNOME Terminal auf Fedora 19 unter ZSH 5.0.7 mit Oh-my-zsh gelöst habe:
where
\e
== Die Escape-Tastenfolge (wie in Abschnitt 4.1.1 dokumentiert )und
[
==O
(Großbuchstabe O; wie in Abschnitt 4.2.1 dokumentiert ), in einigen Fällen. Denn zBtmux
ist bei mir unter diesem Punkt eine Substitution notwendig, ohnetmux
dass jedoch eine Substitution vorgenommen werden muss und[
==[
Die Tastencodes für eine Sequenz können durch
cat
Drücken der gewünschten Sequenz abgerufen werden . Zum Beispiel sollten die Ergebnisse des Pressens<Alt+Right>
so interpretiert werden:^[
==\e
== Die Escape-Tastenfolge[
==[
ohnetmux
ODER[
==O
(Großbuchstabe o) mittmux
1;3
== Ich bin mir nicht sicher, aber es sollte logisch bedeuten<Alt>
C
== Die rechte PfeiltasteDann wird diese Sequenz als erstes Argument
bindkey
in der~/.zshrc
Datei für die Persistenz angegeben und ist gebunden , was bedeutet, dass der Tastenanschlag in Argument 1 einen bestimmten Editorbefehl (oder ein Widget in zsh-Ausdrücken) für das Widget ausführt, welches im ersten Zeile des obigen Beispiels istforward-word
.Die
~/.zshrc
sollte neu bezogen werden, nachdem diese beiden Befehle mit angehängt wurden:$ source ~/.zshrc
Ein Ärger auf meinem System ist nun, dass diese spezielle Kombination dazu führte, dass der Terminalemulator jedes Mal, wenn der Befehl ausgegeben wurde, einen Piepton ausgab
'Edit'->'Profile Preferences'->'Terminal Bell'
Kontrollkästchen.quelle
Was für mich am besten funktionierte, um die Befehlszeilennavigation von iTerm2 intuitiver zu gestalten (ich bin ein junger Erwachsener, der nicht in einer Befehlszeile aufgewachsen ist, aber viel Zeit in Texteditoren und IDEs verbracht hat), war zu:
Natural Text Editing
Option in der Dropdown-Liste Voreinstellungen.Dadurch werden die Schlüssel des Editors standardmäßig auf ein Standard-Arrangement gesetzt, ohne dass ich jede Option einzeln ändern muss.
quelle
Ich schlage vor, Sie verwenden
zkbd
, um Tastenkombinationen zu konfigurieren. Ich benutze es und Alt+ Left/ Alt+ Rightfunktioniert gut auf iTerm2. Siehezshcontrib(1)
Details zu zkbd.quelle