Binden von Fn-Delete in zsh unter Mac OS X

22

Wenn ich in zsh die Tastenkombination Fn + Entf drücke, wird eine Tilde (~) eingefügt. Dies zeigt an, dass zsh den Schlüssel nicht gebunden hat.

Wie binde ich es und lasse es sich normal verhalten (vor dem Cursor löschen)?

Thomas R
quelle

Antworten:

20

Stellen Sie zunächst fest, welche Sequenz generiert wird.

echo "CtrlVFnDelete" | od -c

Binden Sie diese Sequenz dann mit dem normalen zsh-Bindungsmechanismus.

Ignacio Vazquez-Abrams
quelle
1
~> echo "~" | od -c 0000000 ~ \ n 0000002 ~> Was mache ich jetzt mit diesen Informationen?
Thomas R
10
@rixth: Es wird nicht nur eine Tilde ausgegeben. Sie können nicht verwenden echo "~", Sie müssen tatsächlich den Anweisungen folgen, die Ignacio Ihnen gegeben hat. Auf meinem System ist es ^[[3~(oder als odAusgänge:) 033 [ 3 ~. Das Kommando wäre also bindkey "^[[3~" delete-chardas, was in deine gehen würde ~/.zshrc.
Bis auf weiteres angehalten.
2
Um dies zu verdeutlichen, ctrl-vgibt es eine spezielle Escape-Sequenz, bei der "das nächste Zeichen, das ich drücke, als buchstäbliches Zeichen ohne Fluchtzeichen eingefügt wird, anstatt das zu tun, was es normalerweise tut". Das heißt, es wird nicht konvertiert ~, sondern bleibt die Escape-Sequenz.
NHDaly
Ich verstehe nicht, wie man die Ausgabe des oben genannten verwendet, um den Bindkey abzuleiten. Meine Ausgabe ist 0000000 C t r l V F n D e l e t e \n 0000016.
Oliver Joseph Ash
4

Für mich hat das oben Genannte nicht funktioniert, also habe ich die folgende Schlüsselbindung zu meinem hinzugefügt ~/.zshrc:

bindkey "\e[3~" delete-char

Zu Ihrer Information: Ich bin auf einem Mac (High Sierra).

LordTribual
quelle
Und wie kann ich den Code für einen anderen Schlüssel ermitteln, den ich binden möchte, z. B. Fn + F1? damit ich die entsprechenden codes in meinem einstellen kann ~/.zshrc.
Alexventuraio
1
Sie können catdie Schlüssel eingeben und dann eingeben. Fn+F1gibt mir ^[OPzum Beispiel.
LordTribual
1

bindkey 'CtrlvFnDelete' delete-char

Dies wird Fn+ binden Delete, um ein einzelnes Zeichen weiterzuleiten. Wenn das oben nicht klar ist, müssen Sie zwischen dem Eingeben der Anführungszeichen Ctrl+ vund Fn+ Deleteeingeben. CtrlMit + vkönnen Sie die buchstäbliche Escape-Escape-Sequenz für jede Taste eingeben, die danach kommt.

Sie können diese Zeile in Ihre ~/.zshrcDatei einfügen.

Anishpatel
quelle