read
Pour une raison quelconque, Zsh fait écho ^M
à celui de les accepter comme <Enter>
touches. (Si -d
est défini, alors ils sont reconnus comme <Enter>
des, mais toujours en écho.) Il ne prend pas en charge les bases comme la touche de retour arrière.
Je peux contourner cela en piratant / en cours d'exécution bash
,
> a=$(bash -c 'read -e -p "What would you like to do?: " tmp; echo $tmp')
What would you like to do?: eat cake
> echo $a
eat cake
mais je me demande s'il y a une façon plus propre.
zsh
installation 4.3.10;% read a
fonctionne bien ici.read
fonctionne sur les machines Linux.Réponses:
Pour saisir une ligne de texte confortablement sous zsh, utilisez
vared
. Utiliservared
au lieu d'read
invoquer zle , ce qui équivaut à passer-e
en bash pour appeler readline.Le comportement que vous décrivez avec plain
read
ressemble à un terminal mal configuré plutôt qu'à un problème de shell. Exécutezstty -a
pour afficher les paramètres de votre terminal et assurez-vous qu'ileol
est défini sur^M
eterase
est défini sur ce que votre Backspaceclé envoie. Selon le système d'exploitation et la façon dont il est configuré et sur le terminal, Backspaceenvoie soit^H
ou^?
. Le paramètre de retour arrière se passe généralement mal en raison d'un fichier de configuration qui essaie de le définir manuellement, donc la première chose que vous devez faire est de suivre et de supprimer une telle mauvaise configuration. Si vous n'en trouvez aucun, passez en revue les paramètres de votre émulateur de terminal pour vérifier qu'il n'est pas défini dans un mode de compatibilité historique. Si tout le reste échoue, ajoutez quelque chose comme ceci à votre~/.zshrc
:la source
vared
intégrée. Il s'avèrezshzle
que la page de manuel vaut au moins le coup d'œil.