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)?
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.
echo "~"
, vous devez en fait suivre les instructions que Ignacio vous a données. Sur mon système, c'est^[[3~
(ou enod
sorties:)033 [ 3 ~
. Donc, la commande serait cellebindkey "^[[3~" delete-char
qui irait dans votre~/.zshrc
.ctrl-v
est 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.0000000 C t r l V F n D e l e t e \n 0000016
.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).
la source
~/.zshrc
.cat
puis taper les clés.Fn+F1
me donne^[OP
par exemple.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
~/.zshrc
fichier.la source