Zsh's ist read
aus irgendeinem Grund ein Echo ^M
, anstatt sie als <Enter>
Tastenanschläge zu akzeptieren . (Wenn -d
festgelegt, werden sie als <Enter>
's erkannt , aber immer noch wiedergegeben.) Es werden auch keine Grundlagen wie die Rücktaste unterstützt.
Ich kann das umgehen, indem ich hacke / renne 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
aber ich frage mich, ob es einen saubereren Weg gibt.
zsh
Neuinstallation von 4.3.10 nicht bestätigen ;% read a
funktioniert hier gut.read
funktioniert auf Linux-Rechnern.Antworten:
Verwenden Sie, um eine Textzeile bequem unter zsh einzugeben
vared
. Verwenden vonvared
anstelle vonread
ruft zle auf , was dem Übergeben-e
von bash zum Aufrufen von readline entspricht.Das Verhalten, das Sie mit plain beschreiben,
read
sieht eher wie ein falsch konfiguriertes Terminal als wie ein Shell-Problem aus. Führen Siestty -a
Ihre Terminaleinstellungen zu zeigen, und stellen Sie sicher , dasseol
auf eingestellt ist^M
underase
eingestellt ist, was Ihr BackspaceSchlüssel sendet. BackspaceSendet je nach Betriebssystem und Einrichtung und auf dem Terminal entweder^H
oder^?
. Die Rücktasteinstellung geht normalerweise aufgrund einer Konfigurationsdatei schief, die versucht, sie manuell festzulegen. Sie sollten daher zunächst eine solche Fehlkonfiguration verfolgen und entfernen. Wenn Sie keine finden, überprüfen Sie die Einstellungen Ihres Terminalemulators, um sicherzustellen, dass er nicht in einen historischen Kompatibilitätsmodus versetzt wurde. Wenn alles andere fehlschlägt, fügen Sie Folgendes hinzu~/.zshrc
:quelle
vared
Ich wusste nichts über das eingebaute. Es stellt sich heraus, dasszshzle
es sich definitiv lohnt , die Manpage zumindest durchzublättern.