Liaison Fn-Delete dans zsh sur Mac OS X

22

Dans zsh, chaque fois que j'appuie sur Fn + Suppr (qui est la suppression vers l'avant), un tilde (~) est inséré. Cela indique que zsh n'a pas la clé liée.

Comment puis-je le lier et le faire se comporter normalement (supprimer devant le curseur)?

Thomas R
la source

Réponses:

20

Déterminez d'abord quelle séquence il génère.

echo "CtrlVFnDelete" | od -c

Liez ensuite cette séquence à l'aide du mécanisme de liaison zsh normal.

Ignacio Vazquez-Abrams
la source
1
~> echo "~" | od -c 0000000 ~ \ n 0000002 ~> Que dois-je faire avec ces informations maintenant?
Thomas R
10
@rixth: Il ne s'agit pas en fait de produire uniquement un tilde. Vous ne pouvez pas utiliser echo "~", vous devez en fait suivre les instructions que Ignacio vous a données. Sur mon système, c'est ^[[3~(ou en odsorties:) 033 [ 3 ~. Donc, la commande serait celle bindkey "^[[3~" delete-charqui irait dans votre ~/.zshrc.
pause jusqu'à nouvel ordre.
2
Pour clarifier ce qui précède, ctrl-vest une séquence d'échappement spéciale qui signifie «insérer le caractère suivant sur lequel j'appuie en tant que caractère littéral non échappé, au lieu de faire ce qu'il fait habituellement». Cela signifie qu'il n'est pas converti en ~, mais reste la séquence d'échappement.
NHDaly
Je ne comprends pas comment utiliser la sortie de ce qui précède pour dériver la clé de liaison. Ma sortie est 0000000 C t r l V F n D e l e t e \n 0000016.
Oliver Joseph Ash
4

Pour moi, ce qui précède n'a pas fait l'affaire, j'ai donc ajouté la liaison de clé suivante à mon ~/.zshrc:

bindkey "\e[3~" delete-char

FYI: Je suis sur un Mac (High Sierra).

LordTribual
la source
Et comment connaître le code de toute autre clé que je veux lier, par exemple Fn + F1? afin que je puisse définir les codes correspondants dans mon ~/.zshrc.
alexventuraio
1
Vous pouvez taper catpuis taper les clés. Fn+F1me donne ^[OPpar exemple.
LordTribual
1

bindkey 'CtrlvFnDelete' delete-char

Cela liera Fn+ Deletepour supprimer un seul caractère. Si ce qui précède n'est pas clair, vous devez taper Ctrl+ v, Fn+ Deleteentre la saisie des guillemets. Ctrl+ vvous permet de taper la séquence d'échappement d'échappement littérale de la clé qui vient après.

Vous pouvez mettre cette ligne dans votre ~/.zshrcfichier.

anishpatel
la source