Comme l'a souligné @BrandonInvergo dans les commentaires, il s'agit de deux questions différentes. Comme je ne connais pas Python, je ne me concentre que sur les zsh
problème spécifique.
Le Z Shell utilise la fonction Editeur de ligne Z (zle) pour interagir avec l'utilisateur. Les liaisons de touches sont configurées avec l'option bindkey
(voir man zshzle
pour des informations plus détaillées). Il existe différents keymaps, par exemple, lorsque vous tapez à l'invite, la touche main
est actif, si vous utilisez zed
(un éditeur de fichiers simple, mais souvent très pratique), le keymap zed
est actif, etc.
Vous pouvez afficher les liaisons de touches actuelles avec bindkey -M [keymap]
le main
est la valeur par défaut, donc dans le plus vous pouvez simplement omettre le -M [keymap]
paramètre.
Maintenant, examinons votre problème spécifique :
CTRL+A
(représentée par ^A
) saute au début de la ligne, donc vous avez probablement utilisé la commande bindkey -e
quelque part dans vos fichiers RC (soit dans votre fichier personnel ~/.zshrc
mais elle peut aussi être émise dans une configuration générale du système comme /etc/zshrc
) pour activer le emacs
les liaisons entre les touches :
$ zsh -f
$ bindkey -e
$ bindkey | head -n 3
"^@" set-mark-command
"^A" beginning-of-line
"^B" backward-char
Pour avoir le même comportement pour le HOME
vous devez identifier la chaîne produite (ce qui dépend de l'émulateur de terminal que vous utilisez). Une astuce simple consiste à lancer cat
et appuyez sur la touche souhaitée. Voici la sortie en utilisant xterm
pour le HOME
et END
clé :
$ cat
^[[H^[[F
Donc, texte long, message court -- vous voulez mettre ces lignes dans votre ~/.zshrc
(mais après le site bindkey -e
commande) :
bindkey "^[[F" end-of-line
bindkey "^[[H" beginning-of-line
Et n'oubliez pas de source ~/.zshrc
... alors ces deux clés devraient fonctionner comme souhaité.